Unicode字符串的字符数

Dav*_*542 6 python unicode

我如何在python中获得下面的字符数?

s = '??? ???? ???? ??? ????? ????.'

Char count: 29
Char length: 52

len(s) = 52
? = 29
Run Code Online (Sandbox Code Playgroud)

Ale*_*lli 7

decode你的字节串(根据它所在的编码,也许是utf-8) - len得到的Unicode字符串就是你所追求的.

如果事实上最佳实践是尽快解码输入,那么只需处理实际文本(例如unicode,在Python 2中;它只是普通字符串的方式,在Python 3中),如果需要encode,就像你一样再次输出.

字节字符串只应在程序中处理,只要它特别是字节字符串(例如,控制或监视某些硬件设备,&c) - 更多的程序是关于文本的,因此,除了在某些I/O边界必不可少的情况下,它们应该专门处理文本字符串(拼写unicode在Python 2 :-).

但是如果你确实想要保持s字节串,

len(s.decode('utf-8'))
Run Code Online (Sandbox Code Playgroud)

(或者您用来将文本表示为字节字符串的任何其他编码)仍然应该按照您的要求执行.