Python конвертировать UTF-8 обратно в строку - PullRequest
0 голосов
/ 16 октября 2018

У меня есть строка, которая выглядит как

a = 'Verm\xc3\xb6gensverzeichnis'

Когда я делаю print (a), он показывает мне правильный результат - Vermögensverzeichnis.

print(a)
Vermögensverzeichnis

То, что я хочу сделать, - это вычислить вхождение каждой буквы с помощью Counter () и сохранить их в кадре данных.Когда я использую Counter (a), он дает мне такой результат:

 Counter({'V': 1,
         'c': 1,
         'e': 4,
         'g': 1,
         'h': 1,
         'i': 2,
         'm': 1,
         'n': 2,
         'r': 2,
         's': 2,
         'v': 1,
         'z': 1,
         '\xb6': 1,
         '\xc3': 1})

Не могли бы вы помочь мне избавиться от кодов, таких как \ xc3 \ xb6?Я пробовал со многими существующими ответами, к сожалению, они не работают.

Заранее большое спасибо!

1 Ответ

0 голосов
/ 17 октября 2018

Это должен быть 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 и графемы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...