Je veux créer un dictionnaire où les mots anglais pointent vers les traductions russe et française.
Comment imprimer des caractères Unicode en Python? De plus, comment stocker les caractères Unicode dans une variable?
Je veux créer un dictionnaire où les mots anglais pointent vers les traductions russe et française.
Comment imprimer des caractères Unicode en Python? De plus, comment stocker les caractères Unicode dans une variable?
Réponses:
Pour inclure des caractères Unicode dans votre code source Python, vous pouvez utiliser des caractères d'échappement Unicode dans le formulaire \u0123
de votre chaîne et préfixer le littéral de chaîne avec «u».
Voici un exemple exécuté 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 l'exécution de 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 plus d'informations sur la lecture des données Unicode à partir d'un fichier, consultez cette réponse:
mystr
? alors comment l'imprimer?
print your_unicode_characters.encode('utf-8')
Imprimez un caractère Unicode directement à partir de l'interpréteur python:
el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
✓
Le caractère Unicode u'\u2713'
est une coche. L'interprète imprime la coche à l'écran.
Imprimez un caractère Unicode à partir d'un script python:
Mettez ceci dans test.py:
#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');
Exécutez-le comme ceci:
el@apollo:~$ python test.py
here is your checkmark: ✓
S'il ne montre pas de coche pour vous, le problème pourrait être ailleurs, comme les paramètres du terminal ou quelque chose que vous faites avec la redirection de flux.
Stockez 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: é')
Exécutez-le et dirigez la sortie vers le fichier:
python foo.py > tmp.txt
Ouvrez tmp.txt et regardez à 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 dans un fichier.
Si vous essayez d' print()
Unicode et que vous obtenez des erreurs de codec ascii , consultez cette page , dont le TLDR est à faire export PYTHONIOENCODING=UTF-8
avant de lancer python (cette variable contrôle la séquence d'octets sous laquelle la console essaie de coder vos données de chaîne). En interne, Python3 utilise UTF-8 par défaut (voir le HOWTO Unicode) donc ce n'est pas le problème; vous pouvez simplement mettre Unicode dans des chaînes, comme on le voit dans les autres 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 ascii. Certaines des autres réponses disent: «Écrivez-le dans un fichier, d'abord» mais notez qu'elles spécifient l'encodage (UTF-8) pour le faire (donc, Python ne change rien en écriture), puis utilisez une méthode de lecture le fichier qui crache juste les octets sans aucun souci de codage, c'est pourquoi cela fonctionne.
Dans Python 2, vous déclarez des 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.
Considérant qu'il s'agit du premier résultat de débordement de pile lors de la recherche sur Google dans ce sujet, il convient de mentionner que le préfixage des u
chaînes Unicode est facultatif dans Python 3. (L'exemple Python 2 a été copié à partir de la première réponse)
Python 3 (les deux fonctionnent):
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'
J'utilise Portable winpython dans Windows, il inclut la console IPython QT, je pourrais réaliser ce qui suit.
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
votre interpréteur de console doit prendre en charge unicode afin d'afficher les caractères unicode.
Encore une chose qui n'a pas encore été ajoutée
Dans Python 2, si vous souhaitez imprimer une variable qui a unicode et l'utiliser .format()
, faites-le (faites de 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
Remplacez «+» par «000» . Par exemple, 'U + 1F600' deviendra 'U0001F600' et ajoutera au code Unicode "\" et imprimera. Exemple:
>>> print("Learning : ", "\U0001F40D")
Learning : 🐍
>>>
Vérifiez ceci peut-être que cela aidera python unicode emoji