Это должен быть Python 2. Работать с Юникодом, если вы хотите считать символы по сравнению с закодированными байтами.\xc3\xb6
- это закодированные байты ö
:
>>> a = 'Verm\xc3\xb6gensverzeichnis'
>>> print a # Note this only works if your terminal is configured for UTF-8 encoding.
Vermögensverzeichnis
Декодирование в Unicode.Он по-прежнему должен печататься правильно, если ваш терминал настроен правильно:
>>> u = a.decode('utf8')
>>> u
u'Verm\xf6gensverzeichnis'
>>> print u
Vermögensverzeichnis
Подсчет кодовых точек Unicode:
>>> from collections import Counter
>>> Counter(u)
Counter({u'e': 4, u'i': 2, u'n': 2, u's': 2, u'r': 2, u'c': 1, u'v': 1, u'g': 1, u'h': 1, u'V': 1, u'm': 1, u'\xf6': 1, u'z': 1})
u'\xf6'
- это кодовая точка Unicode для ö
.Напечатайте ключи и значения, чтобы правильно отобразить их на терминале:
>>> for k,v in Counter(u).iteritems():
... print k,v
...
c 1
v 1
e 4
g 1
i 2
h 1
V 1
m 1
n 2
s 2
r 2
ö 1
z 1
Дальнейшее изучение, чтобы увидеть, где это сломается: Нормализация Unicode и графемы .