2016-07-25 60 views
-1

我想獲得給定字符串中字母的數量。 但是,len(txt)返回unicode表單中的字母數(我猜),但字母的實際數量少於我得到的數量。Python 3 - 編碼字符串中的字母數

例如:

txt = שלום וברכה 
len(txt) # returns something different then 10 

我看到了蟒蛇2的解決方案使用string.decode,這是不是在Python 3可用的 - 我不知道這是對我來說是合適的答案。 順便說一下,該字符串的編碼是cp862

編輯:詳情: 我使用

with open(path, "r", encoding="cp862") as textFile: 

文本文件中讀取,這是該行的輸出I閱讀時我打印

╫¬╫ñ╫¿╫ש╫ר ╫£╫ª╫ץ╫¥: ╫¢╫ת ╫¬╫ª╫£╫ק╫ץ ╫נ╫¬ ╫¢╫ש╫ñ╫ץ╫¿ 

長度是52 真實情況是:תפריטלצום:כךתצלחואתכיפור and the real the length is 29

+1

關於repl.it我得到:> len(「שלוםוברכה」)=> 10.也許你可以提供關於你的平臺和python版本的更多細節。 – Yegers

+0

我得到這個: '>>> len('שלוםוברכה') >>> 10' – IsaacDj

+0

至少提供重現問題的實際有效代碼。這個例子甚至在語法上都不是有效的。 – deceze

回答

0

也許,喲你打開文件的編碼方案是錯誤的,下面是一個演示:

>>> import sys 
>>> sys.version 
'3.4.3 (default, Oct 14 2015, 20:28:29) \n[GCC 4.8.4]' 
>>> 
>>> s = '╫¬╫ñ╫¿╫ש╫ר ╫£╫ª╫ץ╫¥: ╫¢╫ת ╫¬╫ª╫£╫ק╫ץ ╫נ╫¬ ╫¢╫ש╫ñ╫ץ╫¿' 
>>> len(s) 
52 
>>> 
>>> s = s.encode('cp862').decode('utf-8') 
'תפריט לצום: כך תצלחו את כיפור' 
>>> len(s) 
29 

試着用默認編碼(utf-8)打開它。

+0

謝謝!這工作。 –

+0

@RonU ...如果你對這個答案感到高興......考慮接受它。 –