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

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

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

 paulsm413 мая 2012 г., 07:07
Помогает ли это:docs.python.org/howto/unicode.html
 S.R.I13 мая 2012 г., 07:07
Посмотриhere, Префикс ваших строкu позволяет python рассматривать их как строковые литералы Unicode.

Ответы на вопрос(7)

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

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

If you're trying to print() Unicode, and getting ascii codec errors, проверять, выписыватьсяэта страница, TLDR которого сделатьexport PYTHONIOENCODING=UTF-8 перед запуском python (эта переменная контролирует последовательность байтов, в которой консоль пытается кодировать ваши строковые данные). Внутри Python3 по умолчанию использует UTF-8 (см.Юникод HOWTO) так что это не проблема; Вы можете просто поместить Unicode в строки, как видно из других ответов и комментариев. Когда вы пытаетесь вывести эти данные на свою консоль, возникает проблема. Python считает, что ваша консоль может обрабатывать только ascii. В некоторых других ответах говорится: «Сначала запишите его в файл» но учтите, что они задают кодировку (UTF-8) для этого (поэтому Python ничего не меняет при записи), а затем используют метод для чтения файла, который просто выплевывает байты без какого-либо отношения к кодированию, что почему это работает.

 18 окт. 2017 г., 10:52
Спасибо! У меня была проблема с unicde при использовании пакета asciitree для записи результатов в файл. Это решило это для меня.
 05 янв. 2018 г., 11:55
Огромное спасибо. Потратил часы, погуглив, рад, что нашел это.
Print a unicode character in Python:

Print a unicode character directly from python interpreter:

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

Unicode персонажu'\u2713' это галочка Переводчик печатает галочку на экране.

Print a unicode character from a python script:

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

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

Запустите это так:

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

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

Store unicode characters in a file:

Сохраните это в файл: 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 с пометкой обфускации в файл.

 29 мая 2015 г., 12:28
@ ofer.sheffer причудливо я здесь ищу решение противоположной проблемы, суть в том, что это может занять некоторое время.
 06 янв. 2015 г., 07:41
Терминальная проблема для меня. Перенаправление вывода в файл сработало. +1.

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

Это немного проще в Python 3. Очень хороший обзор можно найтиВот, Эта презентация многое прояснила для меня.

 17 июн. 2015 г., 00:25
Спасибо за ссылку на видео. Это очень полезно.
 15 мая 2017 г., 23:38
Это также доступно как не видео здесь: Pragmatic Unicode, или, Как я могу остановить боль? (Pycon2012)nedbatchelder.com/text/unipain.html

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

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

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

>>>str = "結婚"


>>>print (str)
結婚

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

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

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

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

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

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

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

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

 13 мая 2012 г., 07:57
@ MattRyall, я согласен, но команда российских разработчиков может захотеть написать комментарии и строки документации на русском языке. Для языкового проекта это хороший вариант.
 27 мар. 2014 г., 00:32
Хотя обратите внимание, что это работает, только если вы печатаете только строку. Если он обернут в какой-то другой объект, вы увидите escape-коды. Попробуйте "напечатать [u '' \ u020e \ u0441 \ u0381 \ u038f \ u044f"] " например.
 13 мая 2012 г., 07:37
Да тыcan пишите свой код в текстовых файлах с кодировкой Unicode, но многие редакторы и инструменты испытывают трудности при работе с ними. Мой опыт работы с исходным кодом на множестве различных платформ показал, что лучше всего хранить исходный код в ASCII и использовать экранирование Unicode.
 15 июл. 2015 г., 15:29
Что если я сохраню это в строкуmystr? тогда как его распечатать?
 18 сент. 2016 г., 03:57
@CarloWood Thetop answer  говорит вам именно то, что вы хотите. Простоprint your_unicode_characters.encode('utf-8')

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

В 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

Ваш ответ на вопрос