Python 3 - количество букв в зашифрованной строке
Я хотел бы получить количество букв в данной строке. Однако len(txt) возвращает количество букв в форме 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
1 ответ
Решение
Возможно, вы открываете файл с неправильной схемой кодирования, вот демонстрация:
>>> 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).