Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将utf-8转换回字符串_Python_Unicode_Utf 8 - Fatal编程技术网

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代码点。(这样你就明白你为什么要这么做了)。