Распечатайте символ евро €, используя модуль python, преобразовав символ Юникод u '\ u20ac' - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь напечатать символ валюты, используя python. Я могу напечатать некоторые символы валюты, нормализуя символ Юникода. Поскольку в python 2.7 на карте символов я вижу отображения только для некоторых символов Юникода, а не для символа ЕВРО, который является \ u20ac.

Чтобы напечатать символ EURO, нужно ли включать символы юникода в файл Python карты символов?

ИЛИ есть ли другой способ, которым мы можем использовать для печати символа ЕВРО?

Я использую приведенный ниже код и получаю ошибку ниже.

Выход:

1011 иен * *

¥

Евро

Traceback (most recent call last):
  File ".\new-test.py", line 8, in <module>
    print list1
  File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u20ac' in position 0: character maps to <undefined>

Код:

from __future__ import unicode_literals

import unicodedata

list  = ['Yen','\u00a5','Euro',u'\u20ac']

for character in list:    
        list1 = (unicodedata.normalize("NFKD", character)).strip()
        print list1

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

В командной строке Windows настроено использование кодовой страницы 437 (cp437), а символ евро не определен в этой кодировке. Вы можете изменить кодовую страницу на 1252, которая поддерживает символ:

C:\>py -2
Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:19:30) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print u'\u20ac'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\dev\Python27\lib\encodings\cp437.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u20ac' in position 0: character maps to <undefined>
>>> ^Z


C:\>chcp 1252
Active code page: 1252

C:\>py -2
Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:19:30) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print u'\u20ac'
€

Лучшая альтернатива - перейти на Python 3.6 или более позднюю версию, которая использует API-интерфейсы Windows Unicode для прямой записи в консоль, минуя проблемы с кодировкой:

C:\>py -3
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print('\u20ac')
€
0 голосов
/ 31 октября 2018

Вы можете использовать функцию unichr ()

print unichr(8364)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...