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)打开它。
我想获取给定字符串中的字母数。 然而,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)打开它。