unicode не печатается при импорте из текстового файла python

avatar
Naomi
1 июля 2021 в 18:00
148
1
0

Я читаю текстовый файл из Python, и когда он печатает Unicode, он не печатает символ.

input.txt:

hello world
\u00a9

код:

from pathlib import Path 
with open('input.txt','r') as file:
    txt = Path('input.txt').read_text()
    print(txt)

выход:

hello world 
\u00a9

ожидаемый результат:

hello world
°
Источник
Matthias
1 июля 2021 в 18:14
1

Пожалуйста, отредактируйте свой вопрос и сделайте некоторое форматирование. Читаемость не очень. Но видно, что в вашем файле нет °. Ваш файл содержит текст \u00a9, который печатается. Существует разница между символами \u00a9 как символами в текстовом файле и определением строки "\u00a9" в самой программе. Сравните print("\u00a9") и print(r"\u00a9").

Ответы (1)

avatar
Mark Tolonen
1 июля 2021 в 18:49
2

Выводимые данные в точности соответствуют тому, что находится в файле. Чтобы перевести escape-последовательности Unicode, вам нужно будет указать это как кодировку. Исходный код также смешивал методы чтения файлов, поэтому вот обе версии:

.
with open('input.txt',encoding='unicode-escape') as f:
    txt = f.read()
print(txt)
from pathlib import Path
txt = Path('input.txt').read_text(encoding='unicode-escape')
print(txt)

Вывод (обе версии):

hello world
©

Обратите внимание, что \u00a9 — это символ авторского права, а не символ градуса. Символ градуса: \u00b0.