Python içinde bir karakterin ASCII değerini int olarak nasıl alabilirim?Python'da bir karakterin ASCII değeri
cevap
here Gönderen:
fonksiyon ord() char int değerini tanınacak. Ve eğer için numarası ile oynadıktan sonra geri dönmek isterseniz, chr() işlevi hile yapar.
>>> unichr(97) u'a' >>> unichr(1234) u'\u04d2'
Python 3 size
chr
yerineunichr
kullanabilirsiniz:
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
Python 2'de, kimin sıralı unichr
argümanı Unicode karakteri dönen, ayrıca unichr
işlevi yoktur.
:
ord()
ord() 'nin size ASCII değerini vermediğini unutmayın; kodlamada, karakterin sayısal değerini verir. Bu nedenle, Latin-1 kullanıyorsanız ord ('ä') sonucu 228 olabilir veya UTF kullanıyorsanız, bir TypeError'ı yükseltebilir. 8.
>>> ord(u'あ')
12354
Belirli bir durumda hangi kodlamayı kullandığınızı nasıl öğrenebilirsiniz? – Moustache
kabul cevabın doğru olmakla birlikte, ASCII bir sürü dönüştürmek gerekiyorsa bunu yapmak için daha akıllı/verimli bir yolu yoktur: Hatta bunu bir unicode geçmesi yerine eğer Unicode kodlaması dönebilirsiniz ASCII kodlarını bir kerede Yerine yapmanın:
for ch in mystr:
code = ord(ch)
veya biraz daha hızlı:
for code in map(ord, mystr):
doğrudan kodları yineleme Python yerli türlerine dönüştürmek. (bytes
str
için bir takma, karakteri ile dolaşır olduğu)
for code in mystr.encode('ascii'):
ve bir PY3 tarzı bytes
nesne olmadığı için Python 2.6/2.7 üzerinde, sadece biraz daha işin içinde: Python 3 günü, Önemsiz ama bytearray
var: sıralı tarafından doğal olarak dolaşır dönüşüm anlamına gelen bir türü olarak
# If mystr is definitely str, not unicode
for code in bytearray(mystr):
# If mystr could be either str or unicode
for code in bytearray(mystr, 'ascii'):
Kodlama çok daha hızlı gider; map(ord, mystr)
PY3 üzerinde Py2 üzerinde bytearray(mystr)
veya mystr.encode('ascii')
kullanmaktan daha için yaklaşık iki kat daha uzun süren kapalı başlar ve str
alır gibi onun ASCII kodları kullanarak almak için bir str
yineleme Py2.7 ve Py3.5 hem yerel testlerde, içinde Daha uzun, map(ord, mystr)
için ödenen çarpan, ~ 6.5x-7x'e yükselir.
tek dezavantajı bu nedenle ilk sonuç biraz daha uzun sürebilir, dönüşüm tek seferde olmasıdır ve gerçekten muazzam str
bytes
/bytearray
geçici bir oransal büyük olurdu, ancak bu sayfa dayak içine zorlar sürece, Bu önemli değildir.
- 1. C# dizesinde bir karakterin ASCII Değerini Alma
- 2. Bir karakterin Eclipse içinde bir Unicode codepoint değeri göster
- 3. kendi ASCII bir dizeye bir tamsayı dönüştürme
- 4. Nümerik dizi veya pandalarla pythonda rutini sadeleştirme
- 5. ASCII
- 6. Bir javascript dizesindeki bir null karakterin kaldırılması
- 7. Belirli bir karakterin bir dizede görüntülenme sayısı
- 8. Ruby'de bir dizgede bir karakterin varlığını bulma
- 9. Bir dizeden bir dizi karakterin son geçtiği yer nasıl bulunur?
- 10. Byte [] ASCII
- 11. ASCII kodunu
- 12. Kodlama ('ascii', 'yoksay') bir UnicodeDecodeError?
- 13. NSString veya NSMutableString'de bir karakterin konumu
- 14. Belirli bir karakterin tüm örneklerini dize
- 15. SQL Bildirimi'nde Belirli Bir Karakterin Bulunması
- 16. Otomatik ölçeklendirme sorunu: Karakterin sayımı
- 17. ASCII "grafik" kitaplığı?
- 18. UnicodeEncodeError: 'ascii' codec'i Python
- 19. UnicodeDecodeError: 'ascii' codec'i çözemez
- 20. Karşılıklı ASCII Dize Dönüştürme
- 21. Non-ASCII sembolleri çalışmıyor?
- 22. Optparse açıklamasındaki ASCII art
- 23. Python'da 'ascii' kodlama hatası
- 24. Graphviz ve ascii çıkışı
- 25. Karakterleri ASCII koduna dönüştürme
- 26. Kabuk komut dosyasında bir komut içinde özel bir karakterin kullanılması
- 27. Java'da bir karakterin bir harf olup olmadığı nasıl belirlenir?
- 28. Bir metin alanına girilen bir karakterin değerini değiştirin
- 29. ASCII karakterlerini bir dosyadan diziye okuma
- 30. Konsolda bir ASCII döndürme "imleci" yazdırma
hangi kodlama chr kullanarak? – njzk2
@ njzk2: 'latin1' (eğer orijinal baytınız (say)' cp1251'de (Kiril) –
kodlanmışsa yapılacak harika bir şey değildir. Not chr aynı zamanda Python 3'te unichr olarak da işlev görür. 'chr (31415) -> '窷' ' – William