Python 3 - 编码字符串中的字母数

Python 3 - number of letters in an encoded string

我想获取给定字符串中的字母数。 然而,len(txt) returns unicode形式的字母数(我猜的),但实际字母数比我得到的要少。

例如:

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

我看到 python 2 使用 string.decode 的解决方案,它在 python 3 中不可用 - 我不确定它是否适合我。 顺便说一下,字符串的编码是 cp862.

编辑:更多细节: 我使用

从文本文件中读取
with open(path, "r",  encoding="cp862") as textFile:

这是我打印时读到的行的输出

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

长度为52。 真正的线路是: 真正的长度是 29

可能是您打开的文件使用了错误的编码方案,这里有一个演示:

>>> 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)打开它。