Python将utf-8转换回字符串

时间:2018-10-16 11:28:00

标签: python unicode utf-8

我有一个看起来像

的字符串
a = 'Verm\xc3\xb6gensverzeichnis'

当我打印(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 :(得分:1)

这必须是Python2。如果要计算字符数与编码字节数,请使用Unicode。 Dataset\xc3\xb6的编码字节:

ö

解码为Unicode。只要您的终端配置正确,它仍然可以正确打印:

>>> 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

>>> 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代码点。打印键和值以在终端上正确显示它们:

ö

进行进一步研究以了解将在哪里中断: Unicode规范化 graphemes