我需要知道包含日文/中文字符的unicode字符串中有多少可显示的字符.
示例代码使问题非常明显:
# -*- coding: UTF-8 -*-
str = '\xe7\x9d\xa1\xe7\x9c\xa0\xe6\x99\x82\xe9\x96\x93'
print len(str)
Run Code Online (Sandbox Code Playgroud)
12
print str
Run Code Online (Sandbox Code Playgroud)
睡眠时间<<<注意显示四个字符
从字符串中我怎么知道将要显示4个字符?
这个字符串
str = '\xe7\x9d\xa1\xe7\x9c\xa0\xe6\x99\x82\xe9\x96\x93'
Run Code Online (Sandbox Code Playgroud)
是unicode代码点的编码表示.它包含字节,len(str)返回字节数.
您想知道,有多少个unicode代码包含该字符串.为此,您需要知道,使用了哪些编码来编码这些unicode代码.最流行的编码是utf8.在utf8编码中,一个unicode代码点可以占用1到6个字节.但你不能记住,只需解码字符串:
>>> str.decode('utf8')
u'\u7761\u7720\u6642\u9593'
Run Code Online (Sandbox Code Playgroud)
在这里你可以看到4个unicode点.打印它,看看可打印的版本:
>>> print str.decode('utf8')
????
Run Code Online (Sandbox Code Playgroud)
并获得unicode代码的数量:
>>> len(str.decode('utf8'))
4
Run Code Online (Sandbox Code Playgroud)
更新:还要注意尊重所有可能的案件.