Я хочу сделать словарь, в котором английские слова указывают на русский и французский переводы.
Как распечатать символы юникода в Python? Кроме того, как вы храните символы Unicode в переменной?
Я хочу сделать словарь, в котором английские слова указывают на русский и французский переводы.
Как распечатать символы юникода в Python? Кроме того, как вы храните символы Unicode в переменной?
Ответы:
Чтобы включить символы Unicode в исходный код Python, вы можете использовать escape-символы Unicode в форме \u0123
в своей строке и префикс строкового литерала с 'u'.
Вот пример, работающий в интерактивной консоли Python:
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
Строки, объявленные таким образом, являются переменными типа Unicode, как описано в документации Python Unicode .
Если выполнение указанной выше команды не отображает текст правильно, возможно, ваш терминал не может отображать символы Юникода.
Для получения информации о чтении данных Unicode из файла см. Этот ответ:
mystr
? тогда как это распечатать?
print your_unicode_characters.encode('utf-8')
Распечатайте символ Юникода прямо из интерпретатора Python:
el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
✓
Символ Юникода u'\u2713'
- это галочка. Интерпретатор ставит галочку на экране.
Распечатайте символ Юникода из скрипта Python:
Поместите это в test.py:
#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');
Запускаем так:
el@apollo:~$ python test.py
here is your checkmark: ✓
Если для вас не отображается галочка, то проблема может быть в другом месте, например, в настройках терминала или в том, что вы делаете с перенаправлением потока.
Хранить символы Юникода в файле:
Сохраните это в файл: foo.py:
#!/usr/bin/python -tt
# -*- coding: utf-8 -*-
import codecs
import sys
UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)
print(u'e with obfuscation: é')
Запустите его и направьте вывод в файл:
python foo.py > tmp.txt
Откройте tmp.txt и загляните внутрь, вы увидите это:
el@apollo:~$ cat tmp.txt
e with obfuscation: é
Таким образом, вы сохранили код Unicode e с пометкой обфускации в файл.
Если вы пытаетесь использовать print()
Unicode и получаете ошибки кодека ascii , ознакомьтесь с этой страницей , TL; DR на которой выполняется export PYTHONIOENCODING=UTF-8
перед запуском python (эта переменная определяет, в какой последовательности байтов консоль пытается кодировать ваши строковые данные). Внутри Python3 по умолчанию использует UTF-8 (см. Unicode HOWTO) так что проблема не в этом; вы можете просто поместить Unicode в строки, как показано в других ответах и комментариях. Проблема возникает тогда, когда вы пытаетесь вывести эти данные на консоль. Python считает, что ваша консоль может обрабатывать только ascii. В некоторых других ответах говорится: «Сначала запишите его в файл», но обратите внимание, что они указывают кодировку (UTF-8) для этого (так что Python ничего не меняет при записи), а затем использовать метод для чтения файл, который просто выплевывает байты, не обращая внимания на кодировку, поэтому это работает.
В Python 2 вы объявляете строки Unicode с помощью a u
, как in u"猫"
и используете decode()
и encode()
для перевода в и из Unicode, соответственно.
Это совсем немного проще в Python 3. Очень хороший обзор можно найти здесь . Эта презентация многое прояснила для меня.
Учитывая, что это первый результат переполнения стека при поиске в Google по этой теме, следует упомянуть, что префикс u
к строкам Unicode не является обязательным в Python 3. (пример Python 2 был скопирован из верхнего ответа)
Python 3 (оба работают):
print('\u0420\u043e\u0441\u0441\u0438\u044f')
print(u'\u0420\u043e\u0441\u0441\u0438\u044f')
Python 2:
print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Я использую Portable winpython в Windows, он включает консоль IPython QT, я смог добиться следующего.
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
ваш консольный интерпретатор должен поддерживать Unicode, чтобы отображать символы Unicode.
Еще одна вещь, которую еще не добавили
В Python 2, если вы хотите распечатать переменную с Unicode и использовать .format()
, сделайте это (сделайте базовую строку, которая форматируется, строкой unicode с помощью u''
:
>>> text = "Université de Montréal"
>>> print(u"This is unicode: {}".format(text))
>>> This is unicode: Université de Montréal
Заменить "+" на "000" . Например, «U + 1F600» превратится в «U0001F600», добавив перед кодом Unicode «\» и напечатайте. Пример:
>>> print("Learning : ", "\U0001F40D")
Learning : 🐍
>>>
Проверьте это, возможно, это поможет смайлики Unicode Python