Ich möchte ein Wörterbuch erstellen, in dem englische Wörter auf russische und französische Übersetzungen verweisen.
Wie drucke ich Unicode-Zeichen in Python aus? Wie speichert man Unicode-Zeichen in einer Variablen?
Ich möchte ein Wörterbuch erstellen, in dem englische Wörter auf russische und französische Übersetzungen verweisen.
Wie drucke ich Unicode-Zeichen in Python aus? Wie speichert man Unicode-Zeichen in einer Variablen?
Antworten:
Um Unicode-Zeichen in Ihren Python-Quellcode aufzunehmen, können Sie Unicode-Escape-Zeichen im Formular \u0123
in Ihrer Zeichenfolge verwenden und dem Zeichenfolgenliteral 'u' voranstellen.
Hier ist ein Beispiel, das in der interaktiven Python-Konsole ausgeführt wird:
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
So deklarierte Zeichenfolgen sind Variablen vom Typ Unicode, wie in der Python Unicode-Dokumentation beschrieben .
Wenn das Ausführen des obigen Befehls den Text für Sie nicht korrekt anzeigt, kann Ihr Terminal möglicherweise keine Unicode-Zeichen anzeigen.
Informationen zum Lesen von Unicode-Daten aus einer Datei finden Sie in dieser Antwort:
mystr
? wie drucke ich es dann aus?
print your_unicode_characters.encode('utf-8')
Drucken Sie ein Unicode-Zeichen direkt vom Python-Interpreter:
el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
✓
Das Unicode-Zeichen u'\u2713'
ist ein Häkchen. Der Dolmetscher druckt das Häkchen auf dem Bildschirm.
Drucken Sie ein Unicode-Zeichen aus einem Python-Skript:
Setzen Sie dies in test.py:
#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');
Führen Sie es so aus:
el@apollo:~$ python test.py
here is your checkmark: ✓
Wenn für Sie kein Häkchen angezeigt wird, liegt das Problem möglicherweise an einer anderen Stelle, z. B. bei den Terminaleinstellungen oder bei der Stream-Umleitung.
Speichern Sie Unicode-Zeichen in einer Datei:
Speichern Sie dies in der Datei: 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: é')
Führen Sie es aus und leiten Sie die Ausgabe an die Datei weiter:
python foo.py > tmp.txt
Öffnen Sie tmp.txt und schauen Sie hinein. Sie sehen Folgendes:
el@apollo:~$ cat tmp.txt
e with obfuscation: é
Sie haben also Unicode e mit einem Verschleierungszeichen in einer Datei gespeichert.
Wenn Sie versuchen, print()
Unicode zu verwenden, und ASCII-Codec-Fehler erhalten , lesen Sie diese Seite , deren TLDR export PYTHONIOENCODING=UTF-8
vor dem Starten von Python ausgeführt wird (diese Variable steuert, in welcher Bytefolge die Konsole versucht, Ihre Zeichenfolgendaten zu codieren). Intern verwendet Python3 standardmäßig UTF-8 (siehe Unicode-HOWTO)) das ist also nicht das Problem; Sie können Unicode einfach in Zeichenfolgen einfügen, wie in den anderen Antworten und Kommentaren zu sehen ist. Wenn Sie versuchen, diese Daten an Ihre Konsole zu übertragen, tritt das Problem auf. Python glaubt, dass Ihre Konsole nur ASCII verarbeiten kann. Einige der anderen Antworten sagen: "Schreiben Sie es zuerst in eine Datei", beachten Sie jedoch, dass sie die Codierung (UTF-8) dafür angeben (Python ändert also nichts schriftlich) und verwenden dann eine Methode zum Lesen Die Datei, die nur die Bytes ausspuckt, ohne Rücksicht auf die Codierung, weshalb dies funktioniert.
In Python 2 deklarieren Sie Unicode-Zeichenfolgen mit einem u
, wie in u"猫"
und verwenden decode()
und encode()
um in bzw. aus Unicode zu übersetzen.
In Python 3 ist es viel einfacher. Eine sehr gute Übersicht finden Sie hier . Diese Präsentation hat mir viele Dinge klargestellt.
In Anbetracht der Tatsache, dass dies das erste Stapelüberlaufergebnis bei der Google-Suche in diesem Thema ist, muss erwähnt werden, dass das Präfixieren u
von Unicode-Zeichenfolgen in Python 3 optional ist. (Python 2-Beispiel wurde aus der oberen Antwort kopiert.)
Python 3 (beide funktionieren):
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'
Ich verwende Portable Winpython in Windows, es enthält IPython QT-Konsole, ich könnte Folgendes erreichen.
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
Ihr Konsoleninterpreter sollte Unicode unterstützen, um Unicode-Zeichen anzuzeigen.
Nur noch eine Sache, die noch nicht hinzugefügt wurde
Wenn Sie in Python 2 eine Variable mit Unicode drucken und verwenden möchten .format()
, gehen Sie folgendermaßen vor: Machen Sie die zu formatierende Basiszeichenfolge zu einer Unicode-Zeichenfolge mit u''
:
>>> text = "Université de Montréal"
>>> print(u"This is unicode: {}".format(text))
>>> This is unicode: Université de Montréal
Ersetzen Sie '+' durch '000' . Beispielsweise wird 'U + 1F600' zu 'U0001F600' und stellt dem Unicode-Code "\" voran und druckt. Beispiel:
>>> print("Learning : ", "\U0001F40D")
Learning : 🐍
>>>
Überprüfen Sie dies, vielleicht hilft es Python Unicode Emoji