Как прочитать текстовый файл байтовых литералов в строки UTF-8? - PullRequest
0 голосов
/ 04 марта 2019

У меня есть файл .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'

Как я могу превратить эти строки в строки UTF-8, чтобы вывод был таким:

Afrikaans
አማርኛ
Аҧсшәа

Я попробовал это, но получил только строки с теми же значениями, что и байтовые литералы:

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

1 Ответ

0 голосов
/ 04 марта 2019

Строки являются литералами Python, поэтому ast.literal_eval может анализировать их в байтовые строки Python:

import ast

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

Вывод:

Afrikaans
አማርኛ
Аҧсшәа
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...