Я хочу скласти словник, де англійські слова вказують на російський та французький переклади.
Як надрукувати символи 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