我需要知道包含日文/中文字符的 unicode 字符串中有多少个可显示字符。
使问题变得非常明显的示例代码:
# -*- coding: UTF-8 -*-
str = '\xe7\x9d\xa1\xe7\x9c\xa0\xe6\x99\x82\xe9\x96\x93'
print len(str)
12
print str
sleep 时间<<< 注意显示了四个字符
我如何从字符串中知道要显示 4 个字符?
请您参考如下方法:
这个字符串
str = '\xe7\x9d\xa1\xe7\x9c\xa0\xe6\x99\x82\xe9\x96\x93'
是 unicode 代码点 的编码表示。它包含字节,len(str) 返回您的字节数。
您想知道,有多少个 unicode 代码包含该字符串。为此,您需要知道使用什么编码来对这些 unicode 代码进行编码。最流行的编码是 utf8。在 utf8 编码中,一个 unicode 代码点可以占用 1 到 6 个字节。但是你一定不记得了,只是解码字符串:
>>> str.decode('utf8')
u'\u7761\u7720\u6642\u9593'
在这里你可以看到 4 个 unicode 点。 打印它,查看可打印版本:
>>> print str.decode('utf8')
睡眠時間
并获取 unicode 代码的数量:
>>> len(str.decode('utf8'))
4
更新:另请参阅 abarnert answer尊重所有可能的情况。
