关于utf8字符的Python输出解释

关于utf8字符的Python输出解释,python,ascii,frequency,analysis,python-3.7,Python,Ascii,Frequency,Analysis,Python 3.7,我有一个.txt文件,我需要计算其中所有字符的频率,以便为我的密码学练习做一个简单的频率分析 我认为代码运行得很好,但Python似乎难以读取Ä、Ö、ß等字符(德语字母)。由于代码正在读取一个.txt文件,我假设它是utf8格式的 这是输出: Counter({' ': 168, 'S': 136, '\xc3': 103, 'Z': 83, 'G': 80, 'P': 80, 'W': 76, 'J': 66, 'O': 63, 'Q': 62, 'R': 57, 'U': 57, 'L':

我有一个.txt文件,我需要计算其中所有字符的频率,以便为我的密码学练习做一个简单的频率分析

我认为代码运行得很好,但Python似乎难以读取Ä、Ö、ß等字符(德语字母)。由于代码正在读取一个.txt文件,我假设它是utf8格式的

这是输出:

Counter({' ': 168, 'S': 136, '\xc3': 103, 'Z': 83, 'G': 80, 'P': 80,
'W': 76, 'J': 66, 'O': 63, 'Q': 62, 'R': 57, 'U': 57, 'L': 47, '\x84': 43,
'K': 39, '\x9c': 28, 'X': 25, 'A': 23, 'C': 22, '\x9f': 18, 'E': 17, 'N':
17, '\x96': 14, ',': 11, 'D': 8, 'Y': 8, 'T': 6, 'V': 6, 'B': 5, '"': 4,
"'": 3, 'F': 2, 'M': 2, '!': 1, '-': 1, '?': 1}) [Finished in 0.1s]
我的问题是如何解释反斜杠字符,如“\xc3”等。我在网上找不到任何关于如何翻译的信息

编辑(我的代码):

编辑2:

新产出:

Counter({' ': 168, 'S': 136, 'Z': 83, 'P': 80, 'G': 80, 'W': 76, 'J': 66, 'O': 63, 'Q': 62, 'R': 57, 'U': 57, 'L': 47, 'Ä': 43, 'K': 39, 'Ü': 28, 'X': 25, 'A': 23, 'C': 22, 'ß': 18, 'N': 17, 'E': 17, 'Ö': 14, ',': 11, 'Y': 8, 'D': 8, 'T': 6, 'V': 6, 'B': 5, '"': 4, "'": 3, 'F': 2, 'M': 2, '-': 1, '!': 1, '?': 1})
新代码:

from collections import Counter
with open('/Users/StB/Downloads/text.txt', encoding= 'utf - 8') as f:
    c = Counter()
    for x in f:
        c += Counter(x.strip())
print (c)

endcoding在我在sublime文本上运行的版本上不起作用。但在空闲时工作得很好

对于Python2,您需要将正在读取的字符串显式解码为Unicode。您还可以使用
Counter.update
方法来避免创建和丢弃
Counter
对象

from collections import Counter
with open('/Users/StB/Downloads/text.txt') as f:
    c = Counter()
    for x in f:
        c.update(x.decode('utf-8').strip())
print c

您好@StB,您也可以发布您的代码吗?首先,对于这个问题,关键是要知道您是否在或。我相信前者,但一定要贴上合适的标签。您需要了解字节、字符串、编码、代码点、字符串文字,我可能忘记了一些东西
\x9c
是一个值为十六进制9C或十进制156的字节;它没有作为Unicode字符进行分析。编辑:正如toti08所说,查看您在文件中的读取方式对我们也很重要。@toti08在中编辑了它@阿玛丹:事实上,我在用蟒蛇手杖!您是否尝试过指定编码类型<代码>打开('/Users/StB/Downloads/text.txt',encoding='utf-8')非常感谢!我需要让Python 3在我的sublime文本上运行。“首先,对于这个问题,关键是要知道你是在还是在。”我说的第一件事是:不用担心,只要问题解决了。
from collections import Counter
with open('/Users/StB/Downloads/text.txt') as f:
    c = Counter()
    for x in f:
        c.update(x.decode('utf-8').strip())
print c