Saya ingin membuat kamus di mana kata-kata bahasa Inggris mengarah ke terjemahan bahasa Rusia dan Prancis.
Bagaimana cara mencetak karakter unicode dengan Python? Juga, bagaimana Anda menyimpan karakter unicode dalam variabel?
Saya ingin membuat kamus di mana kata-kata bahasa Inggris mengarah ke terjemahan bahasa Rusia dan Prancis.
Bagaimana cara mencetak karakter unicode dengan Python? Juga, bagaimana Anda menyimpan karakter unicode dalam variabel?
Jawaban:
Untuk menyertakan karakter Unicode dalam kode sumber Python Anda, Anda dapat menggunakan karakter escape Unicode dalam formulir \u0123
di string Anda, dan awali literal string dengan 'u'.
Berikut adalah contoh yang berjalan di konsol interaktif Python:
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
String yang dideklarasikan seperti ini adalah variabel tipe Unicode, seperti yang dijelaskan dalam dokumentasi Python Unicode .
Jika menjalankan perintah di atas tidak menampilkan teks dengan benar untuk Anda, mungkin terminal Anda tidak mampu menampilkan karakter Unicode.
Untuk informasi tentang membaca data Unicode dari file, lihat jawaban ini:
mystr
? lalu bagaimana cara mencetaknya?
print your_unicode_characters.encode('utf-8')
Cetak karakter unicode langsung dari interpreter python:
el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
✓
Karakter unicode u'\u2713'
adalah tanda centang. Penerjemah mencetak tanda centang di layar.
Cetak karakter unicode dari skrip python:
Taruh ini di test.py:
#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');
Jalankan seperti ini:
el@apollo:~$ python test.py
here is your checkmark: ✓
Jika tidak menunjukkan tanda centang untuk Anda, maka masalahnya mungkin ada di tempat lain, seperti pengaturan terminal atau sesuatu yang Anda lakukan dengan pengalihan aliran.
Simpan karakter unicode dalam file:
Simpan ini ke file: 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: é')
Jalankan dan kirimkan output ke file:
python foo.py > tmp.txt
Buka tmp.txt dan lihat ke dalam, Anda akan melihat ini:
el@apollo:~$ cat tmp.txt
e with obfuscation: é
Jadi Anda telah menyimpan unicode e dengan tanda obfuscation di atasnya ke sebuah file.
Jika Anda mencoba print()
Unicode, dan mendapatkan kesalahan codec ascii , lihat halaman ini , yang TLDR-nya dilakukan export PYTHONIOENCODING=UTF-8
sebelum mengaktifkan python (variabel ini mengontrol urutan byte apa yang coba konsol untuk mengenkode data string Anda sebagai). Secara internal, Python3 menggunakan UTF-8 secara default (lihat Unicode HOWTO) jadi bukan itu masalahnya; Anda bisa meletakkan Unicode dalam string, seperti yang terlihat di jawaban dan komentar lain. Saat Anda mencoba dan mengeluarkan data ini ke konsol Anda, masalah terjadi. Python menganggap konsol Anda hanya dapat menangani ascii. Beberapa jawaban lain mengatakan, "Tulis ke file, dulu" tetapi perhatikan bahwa mereka menentukan pengkodean (UTF-8) untuk melakukannya (jadi, Python tidak mengubah apa pun secara tertulis), dan kemudian menggunakan metode untuk membaca file yang hanya mengeluarkan byte tanpa memperhatikan pengkodean, itulah sebabnya itu berfungsi.
Di Python 2, Anda mendeklarasikan string unicode dengan a u
, as in u"猫"
and use decode()
and encode()
to translate to and from unicode.
Ini agak lebih mudah dengan Python 3. Gambaran yang sangat bagus dapat ditemukan di sini . Presentasi itu mengklarifikasi banyak hal bagi saya.
Mengingat ini adalah hasil stack overflow pertama ketika google mencari topik ini, perlu disebutkan bahwa prefiks u
string unicode adalah opsional di Python 3. (contoh Python 2 disalin dari jawaban atas)
Python 3 (keduanya berfungsi):
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'
Saya menggunakan Winpython portabel di Windows, itu termasuk konsol IPython QT, saya dapat mencapai yang berikut.
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
interpreter konsol Anda harus mendukung unicode untuk menampilkan karakter unicode.
Hanya satu hal lagi yang belum ditambahkan
Di Python 2, jika Anda ingin mencetak variabel yang memiliki unicode dan digunakan .format()
, lakukan ini (buat string dasar yang diformat menjadi string unicode dengan u''
:
>>> text = "Université de Montréal"
>>> print(u"This is unicode: {}".format(text))
>>> This is unicode: Université de Montréal
Ganti '+' dengan '000' . Misalnya, 'U + 1F600' akan menjadi 'U0001F600' dan menambahkan kode Unicode dengan "\" dan mencetak. Contoh:
>>> print("Learning : ", "\U0001F40D")
Learning : 🐍
>>>
Periksa ini mungkin itu akan membantu emoji unicode python