Я хочу скласти словник, де англійські слова вказують на російський та французький переклади.
Як надрукувати символи Unicode в Python? Крім того, як ви зберігаєте символи Unicode у змінній?
Я хочу скласти словник, де англійські слова вказують на російський та французький переклади.
Як надрукувати символи Unicode в Python? Крім того, як ви зберігаєте символи Unicode у змінній?
Відповіді:
Щоб включити символи Unicode у свій вихідний код Python, ви можете використовувати символи Esicode Escode у формі \u0123
у вашому рядку та префікс рядкового букваря з "u".
Ось приклад роботи в інтерактивній консолі Python:
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
Рядки, оголошені таким чином, є змінними типу Unicode, як описано в документації на Python Unicode .
Якщо запущена вищевказана команда не відображає текст правильно для вас, можливо, ваш термінал не здатний відображати символи Unicode.
Для отримання інформації про зчитування даних Unicode з файлу див. Цю відповідь:
mystr
? то як її роздрукувати?
print your_unicode_characters.encode('utf-8')
Друк символу unicode безпосередньо з інтерпретатора python:
el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
✓
Символ Unicode u'\u2713'
- це галочка. Перекладач друкує галочку на екрані.
Друк символу unicode із сценарію python:
Помістіть це в test.py:
#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');
Виконайте це так:
el@apollo:~$ 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 і загляньте всередину, ви побачите це:
el@apollo:~$ cat tmp.txt
e with obfuscation: é
Таким чином, ви зберегли unicode e із позначкою обфускування на ньому у файл.
Якщо ви намагаєтеся print()
Unicode та отримуєте помилки кодека ascii , перегляньте цю сторінку , TLDR якої робимо export PYTHONIOENCODING=UTF-8
перед запуском python (ця змінна регулює, яка послідовність байтів консолі намагається кодувати ваші рядкові дані). Внутрішньо Python3 використовує UTF-8 за замовчуванням (див . Unicode HOWTO) тож це не проблема; ви можете просто поставити Unicode в рядки, як це видно в інших відповідях та коментарях. Саме тоді, коли ви намагаєтеся отримати ці дані на консоль, виникає проблема. Python вважає, що ваша консоль може працювати лише з ascii. Деякі з інших відповідей говорять: "Спочатку запишіть його у файл", але зауважте, що вони для цього вказують кодування (UTF-8) (так, Python нічого не змінює в письмовій формі), а потім використовують метод для читання файл, який просто виплескує байти, не враховуючи кодування, тому це працює.
У Python 2 ви оголошуєте рядки unicode з a u
, як у, u"猫"
і використовуйте decode()
та encode()
перекладаєте на unicode і відповідно.
Це зовсім небагато простіше в Python 3. Дуже хороший огляд можна знайти тут . Ця презентація прояснила багато речей для мене.
Враховуючи, що це перший результат переповнення стека під час пошуку Google за цією темою, зазначається, що u
в Python 3. префіксування рядків unicode необов’язкове (приклад Python 2 був скопійований з верхньої відповіді)
Python 3 (обидві роботи):
print('\u0420\u043e\u0441\u0441\u0438\u044f')
print(u'\u0420\u043e\u0441\u0441\u0438\u044f')
Пітон 2:
print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Я використовую портативний winpython в Windows, він включає консоль IPython QT, я міг досягти наступного.
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
Ваш консольний інтерпретатор повинен підтримувати unicode, щоб показати символи unicode.
Ще одна річ, яка ще не додана
У Python 2, якщо ви хочете надрукувати змінну, яка містить unicode та use .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