2015-01-26 66 views
2

我怎麼會得到下面的Python中字符數?Unicode字符串的字符數

s = 'הוא אוסף אתכם מחר בשלוש וחצי.' 

Char count: 29 
Char length: 52 

len(s) = 52 
? = 29 

回答

6

decode您的字節串(根據它在任何編碼,UTF-8可能) - 生成的Unicode字符串的len是你追求的。

如果其實最好的做法是儘快投入解碼,處理只有與實際文本(即unicode,在Python 2,這是現在的樣子普通的字符串,在Python 3)在你的代碼,並如果需要encode就像您再次輸出一樣。

字節字符串應該在程序中處理,只有在字節字符串專用時(例如,控制或監視某個硬件設備,& c) - 更多的程序是關於文本的,因此除了在某些情況下不可或缺的地方/ O的界限,就應該專門處理文本字符串(在Python 2 :-)拼寫unicode

但是,如果你想保持s不過作爲一個字節字符串,

len(s.decode('utf-8')) 

(或任何其他你使用來表示文字的字節串編碼),還是應該做你要求什麼。

2

使用unicode字符串

s = 'הוא אוסף אתכם מחר בשלוש וחצי.' 
    len(s) #52 
    s = u'הוא אוסף אתכם מחר בשלוש וחצי.' 
    len(s) #29 
+0

我得到'在input'不支持的字符。 – 2015-01-26 22:44:19

+0

我不明白。 – 2015-01-26 22:45:21

+0

也許是Python 2的東西? – 2015-01-26 22:46:58