如果我有一个包含组合字符的 Python Unicode 字符串,len
会报告一个与“已看到”的字符数不对应的值。
例如,如果我有一个组合了上划线和下划线的字符串,例如 u'A\u0332\u0305BC'
,len(u'A\u0332\u0305BC')
报告5;但显示的字符串只有 3 个字符长。
如何在 Python 中获取包含组合字形的 Unicode 字符串的“可见”长度(即用户看到的字符串所占据的不同位置的数量)?
最佳答案
如果您有支持匹配 grapheme 的正则表达式风格, 你可以使用 \X
虽然默认的 Python re 模块不支持 \X
,但 Matthew Barnett 的 regex module做:
>>> len(regex.findall(r'\X', u'A\u0332\u0305BC'))
3
在 Python 2 上,您需要在模式中使用 u
:
>>> regex.findall(u'\\X', u'A\u0332\u0305BC')
[u'A\u0332\u0305', u'B', u'C']
>>> len(regex.findall(u'\\X', u'A\u0332\u0305BC'))
3
关于python - 如何在 Python 中获取组合 Unicode 字符串的 "visible"长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33351599/