Chcę stworzyć słownik, w którym angielskie słowa wskazują na rosyjskie i francuskie tłumaczenia.
Jak wydrukować znaki Unicode w Pythonie? Ponadto, jak przechowywać znaki Unicode w zmiennej?
python
python-unicode
NoobDev4iPhone
źródło
źródło
u
umożliwia Pythonowi traktowanie ich jako literałów znaków Unicode.Odpowiedzi:
Aby uwzględnić znaki Unicode w kodzie źródłowym Pythona, możesz użyć znaków zmiany znaczenia Unicode w formularzu
\u0123
w ciągu i poprzedzić literał ciągu znakiem „u”.Oto przykład działający w interaktywnej konsoli Pythona:
Zadeklarowane w ten sposób ciągi znaków są zmiennymi typu Unicode, zgodnie z opisem w dokumentacji Python Unicode .
Jeśli uruchomienie powyższego polecenia nie wyświetla poprawnie tekstu, być może twój terminal nie jest w stanie wyświetlać znaków Unicode.
Aby uzyskać informacje na temat odczytywania danych Unicode z pliku, zobacz tę odpowiedź:
Odczyt znaków z pliku w Pythonie
źródło
mystr
? więc jak to wydrukować?print your_unicode_characters.encode('utf-8')
Wydrukuj znak Unicode w Pythonie:
Wydrukuj znak Unicode bezpośrednio z interpretera Pythona:
Znak Unicode
u'\u2713'
to znacznik wyboru. Tłumacz drukuje znacznik wyboru na ekranie.Wydrukuj znak Unicode ze skryptu Pythona:
Umieść to w test.py:
Uruchom to w ten sposób:
Jeśli nie wyświetla znacznika wyboru, problem może być gdzie indziej, na przykład w ustawieniach terminala lub czymś, co robisz z przekierowaniem strumienia.
Przechowuj znaki Unicode w pliku:
Zapisz to do pliku: foo.py:
Uruchom go i potokuj wyjście do pliku:
Otwórz tmp.txt i zajrzyj do środka, zobaczysz to:
W ten sposób zapisałeś unicode e ze znakiem zaciemnienia do pliku.
źródło
Jeśli próbujesz
print()
Unicode i otrzymujesz błędy kodeka ascii , sprawdź tę stronę , której TLDR jest wykonywanyexport PYTHONIOENCODING=UTF-8
przed uruchomieniem Pythona (ta zmienna kontroluje sekwencję bajtów, którą konsola próbuje zakodować dane ciągu). Wewnętrznie Python3 używa domyślnie UTF-8 (patrz Unicode HOWTO) więc to nie jest problem; możesz po prostu umieścić Unicode w łańcuchach, jak widać w innych odpowiedziach i komentarzach. Problem się pojawia, gdy próbujesz przesłać te dane do konsoli. Python uważa, że twoja konsola obsługuje tylko ascii. Niektóre inne odpowiedzi mówią: „Najpierw zapisz to do pliku”, ale pamiętaj, że określają kodowanie (UTF-8), aby to zrobić (więc Python nie zmienia niczego na piśmie), a następnie używa metody do czytania plik, który po prostu wypluwa bajty bez zwracania uwagi na kodowanie, dlatego to działa.źródło
W Pythonie 2 deklaruje się ciągi znaków Unicode za pomocą odpowiednio a
u
, as inu"猫"
oraz używamydecode()
iencode()
do tłumaczenia odpowiednio na iz Unicode.W Pythonie 3 jest to trochę łatwiejsze. Bardzo dobry przegląd można znaleźć tutaj . Ta prezentacja wyjaśniła mi wiele rzeczy.
źródło
Biorąc pod uwagę, że jest to pierwszy wynik przepełnienia stosu podczas wyszukiwania w Google w tym temacie, warto wspomnieć, że prefiks
u
do ciągów znaków Unicode jest opcjonalny w Pythonie 3. (przykład Pythona 2 został skopiowany z górnej odpowiedzi).Python 3 (oba działają):
Python 2:
źródło
Używam przenośnego winpythona w systemie Windows, zawiera konsolę IPython QT, mogę osiągnąć następujące rezultaty.
Twój interpreter konsoli powinien obsługiwać Unicode, aby wyświetlać znaki Unicode.
źródło
Jeszcze jedna rzecz, która nie została jeszcze dodana
W Pythonie 2, jeśli chcesz wydrukować zmienną, która ma Unicode i użyć
.format()
, zrób to (utwórz ciąg bazowy, który jest formatowany, jako ciąg znaków Unicode zu''
:źródło
To naprawia drukowanie UTF-8 w Pythonie:
źródło
Wymienić '+' z '000' . Na przykład „U + 1F600” zmieni się na „U0001F600” i będzie poprzedzać kod Unicode znakiem „\” i drukować. Przykład:
Sprawdź to, może pomoże to emoji Unicode w Pythonie
źródło