概述
The problem is that the first ë́ is being counted twice, or I guess ë is in position 0 and ´ is in position 1.
是的。这就是Unicode定义代码点的方式。通常,您可以要求Python使用Unicode规范化转换字母和单独的“组合”音调符号,如U+0301组合急性重音:>>> unicodedata.normalize('NFC', u'au0301')
u'xe1' # single character: á
然而,Unicode中没有一个字符表示“e带分音符和锐重音”,因为世界上没有任何语言使用过字母“ë́”。(拼音音译有“u带分音符和锐重音”,但没有“e”。)因此字体支持很差;在许多情况下,它呈现得非常糟糕,在我的网络浏览器上是一个凌乱的斑点。
要找出Unicode代码点字符串中的“可编辑点”在哪里是一项棘手的工作,这需要相当多的语言领域知识。这是“复杂文本布局”问题的一部分,该领域还包括双向文本和上下文glpyh形状和连字等问题。要进行复杂的文本布局,您需要一个库,例如Uniscribe on Windows或Pango(通常有一个Python接口)。
另一方面,如果你只想在计数时完全忽略所有的组合字符,那么你可以很容易地去掉它们:def withoutcombining(s):
return ''.join(c for c in s if unicodedata.combining(c)==0)
>>> withoutcombining(u'ë́aúlt')
'xebaxfalt' # ëaúlt
>>> len(_)
5
最后
以上就是高挑烤鸡为你收集整理的python返回字符串长度_Python在使用特殊字符时返回错误的字符串长度的全部内容,希望文章能够帮你解决python返回字符串长度_Python在使用特殊字符时返回错误的字符串长度所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复