python - 如何在 Python 中获取组合 Unicode 字符串的 "visible"长度?

标签 python python-2.7 unicode

如果我有一个包含组合字符的 Python Unicode 字符串,len 会报告一个与“已看到”的字符数不对应的值。

例如,如果我有一个组合了上划线和下划线的字符串,例如 u'A\u0332\u0305BC'len(u'A\u0332\u0305BC')报告5;但显示的字符串只有 3 个字符长。

如何在 Python 中获取包含组合字形的 Unicode 字符串的“可见”长度(即用户看到的字符串所占据的不同位置的数量)?

最佳答案

如果您有支持匹配 grapheme 的正则表达式风格, 你可以使用 \X

Demo

虽然默认的 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/

相关文章:

python - 如何在 python 中单击带有 Selenium 的复选框

python - Bloomberg Desktop Api v3 Python 2.7 添加历史数据到列表

python - 如何从 QListWidget 拖放到 ComboBox 中

Python - 提取和保存视频帧

objective-c - 如何在 Objective C 中获取随机 unicode 字符

php - 如何在 mysql 或 php 中将 'u00e9' 转换为 utf8 字符?

python - 将字符串附加到 unicode 字符串列表

python - 使用 python 客户端库获取 dataproc 工作线程配置

python - 如果我没有从数据库中找到某些数据,如何添加信息?

django - 如何在 virtualbox/vagrant 服务器中访问 django 网站?