У меня есть файл .txt, и мне нужно посчитать частоту всех символов в нем, чтобы выполнить простой анализ частоты для моего упражнения по криптологии.
Я думаю, что код работал нормально, но кажется, что у Python есть проблемы с чтением таких символов, как Ä, Ö, ß и т. Д. (Немецкий алфавит).Поскольку код читает файл .txt, я предполагаю, что он в формате utf8.
Это вывод:
Counter({' ': 168, 'S': 136, '\xc3': 103, 'Z': 83, 'G': 80, 'P': 80,
'W': 76, 'J': 66, 'O': 63, 'Q': 62, 'R': 57, 'U': 57, 'L': 47, '\x84': 43,
'K': 39, '\x9c': 28, 'X': 25, 'A': 23, 'C': 22, '\x9f': 18, 'E': 17, 'N':
17, '\x96': 14, ',': 11, 'D': 8, 'Y': 8, 'T': 6, 'V': 6, 'B': 5, '"': 4,
"'": 3, 'F': 2, 'M': 2, '!': 1, '-': 1, '?': 1}) [Finished in 0.1s]
Мой вопрос заключается в том, как интерпретировать символы обратной косой черты, такие как \ xc3 и т. Д.Я не могу найти в Интернете ничего о том, как перевести это?
Редактировать (мой код):
from collections import Counter
with open('/Users/StB/Downloads/text.txt') as f:
c = Counter()
for x in f:
c += Counter(x.strip())
print c
Редактировать 2:
Новый вывод:
Counter({' ': 168, 'S': 136, 'Z': 83, 'P': 80, 'G': 80, 'W': 76, 'J': 66, 'O': 63, 'Q': 62, 'R': 57, 'U': 57, 'L': 47, 'Ä': 43, 'K': 39, 'Ü': 28, 'X': 25, 'A': 23, 'C': 22, 'ß': 18, 'N': 17, 'E': 17, 'Ö': 14, ',': 11, 'Y': 8, 'D': 8, 'T': 6, 'V': 6, 'B': 5, '"': 4, "'": 3, 'F': 2, 'M': 2, '-': 1, '!': 1, '?': 1})
новый код:
from collections import Counter
with open('/Users/StB/Downloads/text.txt', encoding= 'utf - 8') as f:
c = Counter()
for x in f:
c += Counter(x.strip())
print (c)
endcoding не работает на версии, которую я использовал для возвышенного текста.Работает нормально в IDLE, хотя!