Как сделать, чтобы читая из файла python переводил коды символов в сами символы?
Когда строку с кодами типа /uXXXX я помещаю в переменную, то print замечательно их переводит в нужные символы.
jap = '\u7fa9\u5149 \u5317\u91ce\u8c37'
print(jap)
義光 北野谷
А когда я читаю эти же символы из файла и делаю print, то питон их не переводит, а оставляет как есть.
with open('jap.txt', 'r') as file:
for line in file:
print(line)
\u7fa9\u5149 \u5317\u91ce\u8c37
Как сделать, чтобы читая из файла python переводил коды символов в сами символы?
Ответы (2 шт):
Попробуйте вот так:
.........
print(line.encode().decode("utf-8", "strict"))
первая директива line.encode() даст результат в битовой последовательности, примерно такой:
b'\xe7\xbe\xa9\xe5\x85\x89 \xe5\x8c\x97\xe9\x87\x8e\xe8\xb0\xb7'
затем декодировать через utf-8. И результат, ожидаемо
'義光 北野谷'
В вашем файле обычные символы ASCII. Да, они являются последовательностями кодирующими юникод, но раскодировать их нужно вручную. В исходном файле питон, в строковых литералах интерпертатор это делает за вас.
with open('jap.txt', 'rb') as file:
for line in file:
print(line.decode("unicode_escape"))
Обратите внимание на флаг b в open.