Python 如何将字节文字的txt文件读入UTF-8字符串?

Python 如何将字节文字的txt文件读入UTF-8字符串?,python,utf-8,Python,Utf 8,我有一个.txt文件,其中的行如下: b'Afrikaans' b'\xe1\x8a\xa0\xe1\x88\x9b\xe1\x88\xad\xe1\x8a\x9b' b'\xd0\x90\xd2\xa7\xd1\x81\xd1\x88\xd3\x99\xd0\xb0' Afrikaans አማርኛ Аҧсшәа 如何将这些行转换为UTF-8字符串,以便输出如下所示: b'Afrikaans' b'\xe1\x8a\xa0\xe1\x88\x9b\xe1\x88\xad\xe1\x8a\x9

我有一个.txt文件,其中的行如下:

b'Afrikaans'
b'\xe1\x8a\xa0\xe1\x88\x9b\xe1\x88\xad\xe1\x8a\x9b'
b'\xd0\x90\xd2\xa7\xd1\x81\xd1\x88\xd3\x99\xd0\xb0'
Afrikaans
አማርኛ
Аҧсшәа
如何将这些行转换为UTF-8字符串,以便输出如下所示:

b'Afrikaans'
b'\xe1\x8a\xa0\xe1\x88\x9b\xe1\x88\xad\xe1\x8a\x9b'
b'\xd0\x90\xd2\xa7\xd1\x81\xd1\x88\xd3\x99\xd0\xb0'
Afrikaans
አማርኛ
Аҧсшәа
我尝试了这个方法,但只得到了与字节文本值相同的字符串:

    with open("encoded.txt", "rb") as filename:
        line = filename.readline().strip()
        while line:
            print(line.decode("utf-8"))
            line = filename.readline().strip()

这些行是Python文本,因此ast.literal\u eval可以将它们解析为Python字节字符串:

import ast

with open('data.txt') as f:
    for line in f:
        print(ast.literal_eval(line).decode('utf8'))
输出:

Afrikaans
አማርኛ
Аҧсшәа

谢谢,这很容易就解决了问题。有没有其他方法可以解决这个问题而不导入模块?@muon012这是一个内置模块。它与Python一起提供。@muon012您可以执行printline.strip[2:-1]。编码为“ascii”。解码为“unicode-escape”。编码为“latin1”。解码为“utf8”,但……糟糕。最好先弄清楚为什么要将字节文字写入文件,然后解决这个问题。