【发布时间】:2019-03-20 22:14:07
【问题描述】:
我有一个看起来像
的字符串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这样的代码吗?我已经尝试了许多现有的答案,不幸的是它们不起作用。
提前非常感谢!
【问题讨论】:
-
我认为这是 Python 2?然后只需打印
a.lower()。您已经有了 UTF-8 编码的数据,\x...转义序列只是字符串对象的 representation 的一部分。它们使您可以更轻松地使用具有非 ASCII 值的 Python 字符串调试代码。 -
我不确定
a.lower()与此有什么关系。字符串是不可变的,所以a.lower()返回一个新的字符串对象。也许您忘记将输出分配给另一个变量,或返回a? -
感谢您的回答。问题是我想计算每个字母的出现,而不是打印它们并显示结果。这就是为什么我确实需要程序而不是打印功能的正确结果。你能帮帮我吗?
-
主要问题:Python 2 还是 Python 3?
-
@ShaLi:然后 decode 从 UTF-8 字节到 Unicode 字符串,然后计算 Unicode 代码点。 (还有read up on Unicode versus bytes 所以你明白你为什么要这样做)。