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?

81
demandé sur Eric Leschinski 2012-05-13 09:00:57

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:

lecture de caractères à partir du fichier en Python

77
répondu Matt Ryall 2017-05-23 12:10:43

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.

40
répondu Eric Leschinski 2013-12-27 18:37:01

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.

18
répondu Steven Burnap 2015-07-07 20:08:46

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.

12
répondu Tom Hundt 2017-05-15 21:36:20

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.

4
répondu MusuNaji 2014-11-18 23:01:47

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
0
répondu Sheshank S. 2018-08-29 01:38:04