Вывести строку Unicode, содержащую как акцентированные символы, так и смайлики

Я читаю файл с Python, который содержит в точности следующую строку

à è ì ò ù ç @ \U0001F914

где \U0001F914 код Unicode для смайлика

если интерпретировать строку как

string=string.decode('utf-8')

Я получил:

à è ì ò ù ç @ \U0001F914

в то время как если я интерпретирую как следующее:

string=string.decode('unicode-escape')

Я получил:

à è ì ò ù ç @

Как я могу напечатать вместо этого:

à è ì ò ù ç @

Я новичок, так что извините, если мой вопрос глуп, но я не могу выкинуть его.

Заранее спасибо.

2 ответа

Решение

Может быть, это не лучшее решение, но сначала вы можете использовать encode с 'unicode-escape' вместо decode и вы получите

data = 'à è ì ò ù ç @ \U0001F914'
print data.encode('unicode-escape')

\xe0 \xe8 \xec \xf2 \xf9 \xe7 @ \\U0001F914

тогда вы должны заменить \\ с \ - в Python вам понадобится \\\\ а также \\

data = 'à è ì ò ù ç @ \U0001F914'
print data.encode('unicode-escape').replace('\\\\', '\\')

\xe0 \xe8 \xec \xf2 \xf9 \xe7 @ \U0001F914

и тогда вы можете использовать свой decode с 'unicode-escape'

data = 'à è ì ò ù ç @ \U0001F914'
print data.encode('unicode-escape').replace('\\\\', '\\').decode('unicode-escape')

à è ì ò ù ç @ 

РЕДАКТИРОВАТЬ:

Кажется, вы должны добавить .decode('utf-8') в начале

#-*- coding: utf-8 -*-

data = 'à è ì ò ù ç @ \U0001F914'.decode('utf-8')

result = data.encode('unicode-escape').replace('\\\\', '\\').decode('unicode-escape')

print result  #.encode('utf-8')

\U0001F914 находится за пределами диапазона печати для IDLE, Tk и большинства терминалов.

Другие вопросы по тегам