Comment imprimer un caractère Unicode en Python?
je veux faire un dictionnaire où les mots anglais pointent vers des traductions en russe et en français.
comment imprimer des caractères unicode en Python? De plus, comment stockez-vous les caractères unicode dans une variable?
6 réponses
pour inclure des caractères Unicode dans votre code source Python, vous pouvez utiliser caractères D'échappement Unicode sous la forme \u0123
dans votre chaîne, et préfixer la chaîne littérale avec 'u'.
voici un exemple d'exécution dans la console interactive Python:
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
Les chaînes déclarées comme ceci sont des variables de type Unicode, comme décrit dans la documentation Python Unicode .
si la commande ci-dessus n'affiche pas le texte correctement pour vous, peut-être que votre terminal n'est pas capable d'Afficher des caractères Unicode.
pour des informations sur la lecture de données Unicode à partir d'un fichier, voir cette réponse:
imprimer un caractère unicode en Python:
imprimer un caractère unicode directement à partir de l'interpréteur python:
el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
✓
caractère Unicode u'\u2713'
est un crochet. L'interprète imprime le coche sur l'écran.
imprimer un caractère unicode à partir d'un script python:
mettez ceci en test.py:
#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');
Exécuter comme ceci:
el@apollo:~$ python test.py
here is your checkmark: ✓
S'il n'affiche pas de crochet pour vous, alors le problème pourrait être ailleurs, comme les paramètres du terminal ou quelque chose que vous faites avec la redirection de flux.
stocker les caractères unicode dans un fichier:
enregistrez ceci dans le fichier: 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: é')
l'Exécuter et le tuyau de sortie de fichier:
python foo.py > tmp.txt
ouvert tmp.txt et regarder à l'intérieur, vous voyez ceci:
el@apollo:~$ cat tmp.txt
e with obfuscation: é
ainsi vous avez enregistré unicode e avec une marque d'obfuscation sur elle à un dossier.
en Python 2, vous déclarez les chaînes unicode avec un u
, comme dans u"猫"
et utilisez decode()
et encode()
pour traduire vers et depuis unicode, respectivement.
c'est un peu plus facile en Python 3. Un très bon aperçu peut être trouvé ici . Cette présentation a clarifié beaucoup de choses pour moi.
si vous essayez de print()
Unicode, et d'obtenir des erreurs ASCII codec , cochez cette page , dont la TLDR est do export PYTHONIOENCODING=UTF-8
avant de démarrer python (cette variable contrôle quelle séquence d'octets la console essaie de coder vos données de chaîne de caractères). En interne, Python3 utilise UTF-8 par défaut (voir the Unicode HOWTO ) donc ce n'est pas le problème; vous pouvez simplement mettre Unicode dans les chaînes, comme vu dans l'autre réponses et commentaires. C'est lorsque vous essayez de transmettre ces données à votre console que le problème se produit. Python pense que votre console ne peut gérer que l'ascii. Certaines des autres réponses disent, "Ecrivez - le d'abord à un fichier", mais notez qu'elles spécifient l'encodage (UTF-8) pour le faire (donc, Python ne change rien à l'écriture), et puis utilisez une méthode pour lire le fichier qui crache juste les octets sans aucun égard pour l'encodage, ce qui est la raison pour laquelle cela fonctionne.
j'utilise Winpython Portable dans Windows, il comprend IPython QT console, je pourrais atteindre le suivant.
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
votre interpréteur de console doit supporter unicode pour afficher les caractères unicode.
une seule chose de plus qui n'a pas encore été ajoutée
en Python 2, Si vous voulez imprimer une variable qui a unicode et utiliser .format()
, alors faites ceci (faites la chaîne de base qui est formatée une chaîne unicode avec u''
:
>>> text = "Université de Montréal"
>>> print(u"This is unicode: {}".format(text))
>>> This is unicode: Université de Montréal