İngilizce kelimelerin Rusça ve Fransızca çevirileri işaret ettiği bir sözlük yapmak istiyorum.
Python'da unicode karakterleri nasıl yazdırırım? Ayrıca, unicode karakterleri bir değişkende nasıl saklarsınız?
İngilizce kelimelerin Rusça ve Fransızca çevirileri işaret ettiği bir sözlük yapmak istiyorum.
Python'da unicode karakterleri nasıl yazdırırım? Ayrıca, unicode karakterleri bir değişkende nasıl saklarsınız?
Yanıtlar:
Python kaynak kodunuza Unicode karakterleri eklemek için , dizenizdeki formda Unicode kaçış karakterlerini kullanabilir \u0123
ve dize değişmezinin önüne 'u' ekleyebilirsiniz .
İşte Python etkileşimli konsolunda çalışan bir örnek:
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
Bu şekilde bildirilen dizeler, Python Unicode belgelerinde açıklandığı gibi Unicode türü değişkenlerdir .
Yukarıdaki komutu çalıştırmak metni sizin için doğru şekilde görüntülemiyorsa, belki de terminaliniz Unicode karakterlerini görüntüleyemiyordur.
Bir dosyadan Unicode verilerini okuma hakkında bilgi için şu yanıta bakın:
mystr
? o zaman nasıl yazdırılır?
print your_unicode_characters.encode('utf-8')
Doğrudan python yorumlayıcısından bir unicode karakteri yazdırın:
el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
✓
Unicode karakteri u'\u2713'
bir onay işaretidir. Yorumlayıcı, onay işaretini ekrana yazdırır.
Bir python komut dosyasından bir unicode karakteri yazdırın:
Bunu test.py'ye koyun:
#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');
Şu şekilde çalıştırın:
el@apollo:~$ python test.py
here is your checkmark: ✓
Sizin için bir onay işareti göstermiyorsa, sorun başka bir yerde olabilir, örneğin uçbirim ayarları veya akış yeniden yönlendirmeyle yaptığınız bir şey olabilir.
Unicode karakterlerini bir dosyada saklayın:
Bunu dosyaya kaydedin: 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: é')
Çalıştırın ve çıktıyı dosyaya yönlendirin:
python foo.py > tmp.txt
Tmp.txt dosyasını açın ve içine bakın, şunu görürsünüz:
el@apollo:~$ cat tmp.txt
e with obfuscation: é
Böylelikle unicode e'yi bir dosyaya gizleme işareti ile kaydettiniz.
Eğer çalışıyorsanız print()
Unicode ve ASCII codec'i hataları alıyorsanız , kontrol bu sayfayı , TLDR hangi do export PYTHONIOENCODING=UTF-8
piton (Ne konsol çalışır gibi dize verileri kodlamak için bayt dizisi bu değişken kontrolleri) kadar ateş önce. Dahili olarak, Python3 varsayılan olarak UTF-8 kullanır ( Unicode NASIL) yani sorun bu değil; Diğer yanıtlarda ve yorumlarda görüldüğü gibi, Unicode'u dizelere koyabilirsiniz. Sorun, bu verileri konsolunuza götürmeye çalıştığınızda gerçekleşir. Python, konsolunuzun yalnızca ascii'yi işleyebileceğini düşünüyor. Diğer yanıtlardan bazıları "Önce bir dosyaya yaz" der, ancak bunu yapmak için kodlamayı (UTF-8) belirlediklerini unutmayın (bu nedenle Python, yazılı olarak hiçbir şeyi değiştirmez) ve ardından okuma için bir yöntem kullanır. sadece baytları kodlamaya bakmaksızın tüküren dosya, işte bu yüzden çalışıyor.
Python 2, bir ile unicode dizeleri beyan u
olduğu gibi u"猫"
ve kullanım decode()
ve encode()
ve sırasıyla unicode dan çevirmek.
Çok iyi genel bakış bulunabilir Python 3. A'da biraz daha kolay burada . Bu sunum benim için pek çok şeyi açıklığa kavuşturdu.
Bunun, google bu konuyu ararken ilk yığın taşması sonucu olduğunu düşünürsek, u
Python 3'te unicode dizelere önek eklemenin isteğe bağlı olduğunu belirtmek gerekir (Python 2 örneği en üstteki cevaptan kopyalanmıştır)
Python 3 (ikisi de çalışır):
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'
Windows'ta Portable winpython kullanıyorum, IPython QT konsolu içeriyor, aşağıdakileri yapabilirim.
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
konsol yorumlayıcınızın unicode karakterleri göstermesi için unicode'u desteklemesi gerekir.
Henüz eklenmemiş bir şey daha
Python 2'de, unicode içeren bir değişken yazdırmak ve kullanmak istiyorsanız .format()
, bunu yapın (biçimlendirilen temel dizeyi şununla bir unicode dizesi yapın u''
:
>>> text = "Université de Montréal"
>>> print(u"This is unicode: {}".format(text))
>>> This is unicode: Université de Montréal
"+" Yı "000" ile değiştirin . Örneğin, 'U + 1F600' , 'U0001F600' olur ve Unicode kodunu başına "\" ekler ve yazdırır. Misal:
>>> print("Learning : ", "\U0001F40D")
Learning : 🐍
>>>
Bunu kontrol et, belki python unicode emojisine yardımcı olur