【发布时间】:2015-03-25 10:51:54
【问题描述】:
如何在 python 中获取以下字符数?
s = 'הוא אוסף אתכם מחר בשלוש וחצי.'
Char count: 29
Char length: 52
len(s) = 52
? = 29
【问题讨论】:
如何在 python 中获取以下字符数?
s = 'הוא אוסף אתכם מחר בשלוש וחצי.'
Char count: 29
Char length: 52
len(s) = 52
? = 29
【问题讨论】:
decode 你的字节字符串(根据它的任何编码,可能是 utf-8) -- 生成的 Unicode 字符串的 len 就是你所追求的。
如果事实最佳做法是尽快解码输入,则仅处理实际文本(即,unicode,在 Python 2 中;这只是普通字符串的方式,在 Python 3 中) 在您的代码中,如果需要 encode,就像您再次输出一样。
只有当字节字符串专门与字节字符串相关时(例如,控制或监视某些硬件设备等),才应在程序中处理字节字符串——更多的程序是关于文本的,因此,除非在某些 I/O 中必不可少边界,它们应该专门处理 text 字符串(在 Python 2 中拼写为 unicode:-)。
但如果您确实想将s 保留为字节串,
len(s.decode('utf-8'))
(或您用来将文本表示为字节字符串的任何其他编码)仍应满足您的要求。
【讨论】:
使用 unicode 字符串
s = 'הוא אוסף אתכם מחר בשלוש וחצי.'
len(s) #52
s = u'הוא אוסף אתכם מחר בשלוש וחצי.'
len(s) #29
【讨论】:
Unsupported characters in input。
ascii 上都没有,所以你可能想检查:-)