从文本文件中读取Python编码问题

1 python encoding python-2.7

我正在阅读包含单个单词的文本文件B\xc3\xa9zier.

我希望将其转换为等效的解码utf-8格式,Bézier然后将其打印到控制台.

我的代码如下:

foo=open("test.txt")  
for line in foo.readlines():  
    for word in line.split():  
        print(word.decode('utf-8'))
foo.close()
Run Code Online (Sandbox Code Playgroud)

输出是:

B\xc3\xa9zier
Run Code Online (Sandbox Code Playgroud)

但是,如果我做这样的事情:

>>> print('B\xc3\xa9zier'.decode('utf-8'))
Run Code Online (Sandbox Code Playgroud)

我得到了正确的输出:

Bézier
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么会这样?

jam*_*lak 6

好像你在文件中有一个原始的utf8转义字符串,用来string_escape代替解码它

with open('test.txt') as f:
    for line in f:
        for word in line.split():
            print(word.decode('string_escape').decode('utf-8'))


Bézier
Run Code Online (Sandbox Code Playgroud)