Python 2 Печать Emoji в предложении в виде прямоугольников - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть это ??? ( громко плачущее лицо и хлопающая рука символ смайлика) в файле string.txt (закодировано в utf-8).

Я пытаюсь распечатать его в стандартном Python IDLE в предложении.

with open('string.txt','r') as f:
    string = f.read()

Код:

>>> string
'\xf0\x9f\x98\xad\xf0\x9f\x91\x8f\xf0\x9f\x8f\xbb'

>>> print string
ð゚リᆳð゚ムマð゚マᄏ

>>> print string.decode('utf-8')
???    # <-- this is the output I want in a middle of sentence

Это вывод, который я хочу (прямоугольники).Сложность в том, что я хочу, чтобы они были в середине предложения.Итак:

>>> print 'The string is: {}!'.format(string.decode('utf-8')) # will get error
Traceback (most recent call last):
  File "<pyshell#81>", line 1, in <module>
    print 'The string is: {}!'.format(string.decode('utf-8'))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)

Получена ошибка.Но если я не декодирую его, он работает:

>>> print 'The string is: {}!'.format(string)
The string is: ð゚リᆳð゚ムマð゚マᄏ!

Это не вызвало никакой ошибки, но я не хочу этот вывод.Я хочу прямоугольники.

Как мне решить эту проблему, чтобы она выглядела так:

>>> print 'The string is: {}!'.format(magical_string)
The string is: ???!

Предпочитает не использовать сторонние библиотеки.

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

Моя операционная система: Windows 7 (предпочтительное решение для всех Windows 7-10)

Python: 2.7

1 Ответ

0 голосов
/ 23 сентября 2018

Я думаю, что это настройка вашей IDE, а не проблема Python.

Когда я сохраняю первую строку вашего вопроса в текстовый файл и читаю его:

Скопировано из терминала:

>>> open('test.txt').read()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\joost\Desktop\pythontests\venv\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 19: character maps to <undefined>
>>> open('test.txt', encoding='utf-8').read()
'I have this ??? (loudly crying\n'
>>>

Как изображение:

enter image description here

Возможно, укажите кодировку при открытии файла?

...