我有一个看起来像
的字符串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之类的代码吗?我已经尝试了许多现有的答案,但是不幸的是它们没有用。
非常感谢!
答案 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 。