Python将utf-8转换回字符串
我有一根绳子,看起来像Python将utf-8转换回字符串,python,unicode,utf-8,Python,Unicode,Utf 8,我有一根绳子,看起来像 a = 'Verm\xc3\xb6gensverzeichnis' 当我打印(a)时,它会显示正确的结果,即Vermögensverzeichnis print(a) Vermögensverzeichnis 我要做的是使用Counter()计算每个字母的出现次数,并将它们保存在数据帧中。当我使用计数器(a)时,它会给出如下结果: Counter({'V': 1, 'c': 1, 'e': 4, 'g': 1,
a = 'Verm\xc3\xb6gensverzeichnis'
当我打印(a)时,它会显示正确的结果,即Vermögensverzeichnis
print(a)
Vermögensverzeichnis
我要做的是使用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这样的代码吗?我已经尝试了许多现有的答案,不幸的是它们不起作用
提前多谢 这一定是Python 2。如果要计算字符数与编码字节数,请使用Unicode
\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规范化和graphemes。我想这是Python 2?然后只需打印
a.lower()
。您已经有了UTF-8编码的数据,\x..
转义序列只是字符串对象表示的一部分。它们使您可以更轻松地使用非ASCII值的Python字符串调试代码。我不确定a.lower()
与此有什么关系。字符串是不可变的,因此a.lower()
返回一个新的字符串对象。也许您忘记将输出分配给另一个变量,或者返回到a
?谢谢您的回答。问题是我想计算每个字母的出现次数,而不是打印它们并显示结果。这就是为什么我需要程序的正确结果,而不是打印功能。你能帮我吗?主要问题:Python 2或Python 3?@ShaLi:然后将UTF-8字节解码为Unicode字符串,并计算Unicode代码点。(这样你就明白你为什么要这么做了)。