2010-02-28 14 views
24

burada kullanamazsınız! Python'da yeni başlayan biriyim ve dizeleri ve karakterleri işlemek için Python Cookbook (2. Baskı)'u inceledim.Unichr'i Python 3.1

Bir sayıyı Unicode eşdeğerine dönüştürmeyi denemek istedim. Bu yüzden, Cookbook'ta göre, böyle bir şey gider, built-in function called 'unichr' kullanarak çalıştı:

>>> print repr(unichr(8224)) 

... ve çıkış olacaktır:

u'\u2020' 

Ancak, kod başarısız oldu. print ile ilgili bir şey olduğunu düşündüm (çünkü Python 3, "") yerine print() kullanmaktadır, ancak bu işe yaramadı. Kodda çeşitli varyasyonları denedim ve hala başarısız oldu. Nihayet, sadece basit bir çizgi yazdığınız: Benim için sürpriz

unichr(10000) 

, bu hata mesajı haşhaş tuttu olursa olsun yukarıdaki işlevi koymak ne değeri:

NameError: name 'unichr' is not defined 

ne olabilir sorun? Almam gereken belirli bir modül var mı?

+1

Sadece bir ipucu: "Kod başarısız" dan hemen sonra hata mesajından bahsetmiş olabilirsiniz. Her zaman Python'un verdiği hata mesajını (ve bellekten değil * tam * hata mesajını) not edin ve bunu erkenden belirtin. –

+0

Tavsiyeniz için teşekkürler, kesinlikle aklımda tutacağım. – anonnoir

cevap

39

Python 3, sadece chr kullanın:

>>> chr(10000) 
'✐' 
3

Python 3.x özel bir Unicode dize türü/sınıfı yoktur. Her dize bir Unicode dizesidir. Yani ... chr'u deneyebilirim. unichr'un ön-3.x'ini size vermelidir. Ne yazık ki test edemem.

11

Python 3'te, unicode ve normal dizeler arasında artık bir fark yoktur. Sadece unicode dizeleri ve ikili veriler arasında. Bu nedenle geliştiriciler, unichr işlevini nihayetinde chr 'un lehine kaldırarak şimdi eski unichr'un ne yaptığını yapıyor. here belgelerine bakın.

+0

Teşekkürler. Bu yorum alanında ilgili bir soru göndermeyi denedim, ancak düzgün bir şekilde doldurmayacak, bu yüzden aşağıda yayınladım. (Umarim site kurallarindan dolayi nasil çalismadim umarim) – anonnoir

+0

Hala iki string-ish tipi vardir. Ne 2.x 'unicode'' olarak adlandırır, 3.x' str' çağırır (önemsiz değişiklikler ile). Ne 2.x 'str', 3.x' bytes'' çağırır (ılımlı değişiklikler ile). –