Как печатать символ Unicode в Python?

Я хочу сделать словарь, где английские слова указывают на русский и французский переводы.

Как распечатать символы Unicode в Python? Кроме того, как вы храните символы unicode в переменной?

Ответ 1

Чтобы включить символы Unicode в исходный код Python, вы можете использовать символы удаления Unicode в форме \u0123 в вашей строке и префикс строковый литерал с 'u'.

Вот пример работы в интерактивной консоли Python:

>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия

Строки, объявленные как это, являются переменными типа Unicode, как описано в документации по юникоду Python.

Если запуск указанной выше команды не отображает текст правильно для вас, возможно, ваш терминал не способен отображать символы Unicode.

Информацию о чтении данных Unicode из файла см. в этом ответе:

Чтение символов из файла в Python

Ответ 2

Печать символа юникода в Python:

Печать символа юникода непосредственно из интерпретатора python:

[email protected]:~$ python
Python 2.7.3
>>> print u'\u2713'
✓

Юникодный символ u'\u2713' - это галочка. Интерпретатор печатает галочку на экране.

Вывести символ юникода из python script:

Поместите это в test.py:

#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');

Запустите его следующим образом:

[email protected]:~$ python test.py
here is your checkmark: ✓

Если он не показывает галочку для вас, проблема может быть в другом месте, например, настройки терминала или что-то, что вы делаете с перенаправлением потока.

Сохранять символы Unicode в файле:

Сохраните это в файл: 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 и загляните внутрь, вы увидите следующее:

[email protected]:~$ cat tmp.txt 
e with obfuscation: é

Таким образом, вы сохранили unicode e с отметкой обфускации на нем в файл.

Ответ 3

Если вы пытаетесь print() Unicode и получаете ошибки ascii-кодека, проверьте эту страницу, TL;DR которого выполняет export PYTHONIOENCODING=UTF-8 перед запуском python (эта переменная управляет той последовательностью байтов, которую консоль пытается кодировать ваши строковые данные как). Внутри Python3 по умолчанию использует UTF-8 (см. Unicode HOWTO), чтобы не проблема; вы можете просто поместить Unicode в строки, как видно из других ответов и комментариев. Это когда вы пытаетесь получить эти данные на консоль, что проблема происходит. Python думает, что ваша консоль может обрабатывать только ascii. Некоторые из других ответов говорят: "Сначала напишите его в файл", но обратите внимание, что они определяют кодировку (UTF-8) для этого (так что Python ничего не меняет в письменной форме), а затем используйте метод для чтения файл, который просто выплескивает байты без какого-либо отношения к кодировке, поэтому это работает.

Ответ 4

В Python 2 вы объявляете строки unicode с помощью u, как в u"猫", и используйте decode() и encode() для перевода в и из юникода соответственно.

Это довольно легко в Python 3. Здесь очень хороший обзор . Эта презентация многое прояснила для меня.

Ответ 5

Я использую Portable winpython в Windows, он включает в себя консоль IPython QT, я мог бы добиться следующего.

>>>print ("結婚")
結婚

>>>print ("おはよう")
おはよう

>>>str = "結婚"


>>>print (str)
結婚

ваш консольный интерпретатор должен поддерживать unicode, чтобы показывать символы Unicode.

Ответ 6

Еще одна вещь, которая еще не была добавлена

В 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

Ответ 7

Это исправляет печать UTF-8 в python:

UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)

Ответ 8

Учитывая, что это первый результат при поиске в 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'