Jak uzyskać wartość ASCII znaku jako int w Python?Wartość ASCII znaku w języku Python
Odpowiedz
Od here:
funkcji ord() by uzyskać wartość int o char. A jeśli chcesz, aby konwertować ponownie po graniu z numerem , funkcja chr() wykonuje lewę.
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
W Pythonie 2, istnieje również funkcja unichr
, wracając charakter Unicode którego porządkowa jest unichr
argumentem:
>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'
W Pythonie 3 można użyć chr
zamiast unichr
.
Szukasz:
ord()
Należy zauważyć, że ord() nie daje wartości ASCII jako takiej; daje wartość liczbową znaku w dowolnym kodowaniu. Dlatego wynik ord ("ä") może wynosić 228, jeśli używasz Latin-1, lub możesz wywołać TypeError, jeśli używasz UTF-a 8. Może nawet zwrócić kodowy Unicode zamiast jeśli przejdą mu unicode:
>>> ord(u'あ')
12354
Jak możesz dowiedzieć się, jakiego kodowania używasz w danej sytuacji? – Moustache
Zaakceptowanych odpowiedź jest poprawna, ale jest bardziej mądry/skuteczny sposób to zrobić, jeśli chcesz przekonwertować całą masę ASCII znaki do ich kodów ASCII na raz. Zamiast robić:
for ch in mystr:
code = ord(ch)
albo nieco szybciej:
for code in map(ord, mystr):
przekonwertować do Pythona rodzimych typów, które iteracyjne kody bezpośrednio. Na Python 3, jest banalna:
for code in mystr.encode('ascii'):
i na Pythonie 2.6/2.7, to tylko nieco bardziej zaangażowane, ponieważ nie posiada Py3 stylu bytes
obiektu (bytes
jest aliasem dla str
, który dokonuje iteracji po znaku) , ale mają bytearray
:
# 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'):
Kodowanie jako typ, który natywnie iteracje przez porządkowej oznacza przekształcenie idzie znacznie szybciej; w testach lokalnych na Py2.7 i Py3.5, iteracja str
w celu uzyskania kodów ASCII z użyciem map(ord, mystr)
rozpoczyna się od około dwukrotnego wydłużenia dla niż przy użyciu bytearray(mystr)
na Py2 lub mystr.encode('ascii')
na Py3 i jako str
dłużej, mnożnik zapłacony za map(ord, mystr)
wzrasta do ~ 6,5x-7x.
Jedynym minusem jest to, że konwersja jest wszystko na raz, dzięki czemu pierwszy wynik może trwać nieco dłużej, a to naprawdę ogromny str
miałaby proporcjonalnie duży tymczasowy bytes
/bytearray
, ale chyba to zmusza cię do widoku bicia, to nie ma znaczenia.
- 1. Jak uzyskać wartość int ASCII znaku w kakao?
- 2. Kodek ASCII w języku Python nie może kodować błędu znaku podczas zapisu do pliku CSV
- 3. Jak obsługiwać znaki Unicode (spoza zestawu ASCII) w języku Python?
- 4. Przekazywanie znaku "+" w żądaniu POST w języku Python
- 5. Ujemna wartość ASCII
- 6. Modelowanie wykresu w języku Python
- 7. Python - Compress Ascii String
- 8. Konwertuj z łańcucha ASCII zakodowanego w szesnastkowy na zwykły ASCII?
- 9. Python NLTK: SyntaxError: Brak znaku ASCII "\ xc3" w pliku (Analiza sensu -NLP)
- 10. Python unicode codepoint do znaku Unicode
- 11. Python - Unicode do konwersji ASCII
- 12. Dekodowanie znaku specjalnego w języku C#
- 13. Jak wydrukować określoną wartość JSON w języku Python?
- 14. Co oznacza składnia "zmienna // = wartość" w języku Python?
- 15. Licznik sygnałów w języku Python
- 16. Pokaż wartość kodowa znaku Unicode w Eclipse
- 17. Deskryptory w języku Python nie działają w języku Python 2.7
- 18. Microsoft.VisualBasic.FileIO.TextFieldParser zmienia ± Ascii 241 na? Ascii 63
- 19. Odwracanie indeksowania w języku Python?
- 20. Hash Map w języku Python
- 21. Usuwanie duplikatów w języku Python
- 22. Pakiety w języku Python?
- 23. Wątki w języku Python
- 24. iteritems w języku Python
- 25. ++ operator w języku Python
- 26. Logowanie w języku Python?
- 27. sqlite3 w języku Python
- 28. Przerwa w języku Python
- 29. Regresja krokowa w języku Python
- 30. Testowanie listy w języku Boolean w języku Python
które kodowanie w chr przy użyciu? – njzk2
@ njzk2: 'latin1' (co nie jest genialne, jeśli twój oryginalny bajt został zakodowany w (powiedzmy)' cp1251' (cyrylica) –
Zauważ, że chr działa również jako unichr w Pythonie 3. 'chr (31415) -> '窷' ' – William