Wie bekomme ich den ASCII Wert eines Zeichens als int in Python?ASCII-Wert eines Zeichens in Python
Antwort
Von here:
Funktion ord() würde den int-Wert des char erhalten. Und wenn Sie zurück konvertieren möchten, nachdem Sie mit der Nummer gespielt haben, funktioniert die Funktion chr().
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
In Python 2, gibt es auch die unichr
Funktion, Rückführen des Unicode Charakter, dessen Ordnungszahl ist die unichr
Argument:
>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'
In Python 3 Sie chr
statt unichr
verwenden können.
Sie suchen:
ord()
Beachten Sie, dass ord() nicht den ASCII-Wert per se angibt; es gibt Ihnen den numerischen Wert des Zeichens in welcher Codierung es auch ist. Daher kann das Ergebnis von ord ('ä') 228 sein, wenn Sie Latin-1 verwenden, oder es kann einen TypeError auslösen, wenn Sie UTF- verwenden. 8. Es kann sogar den Unicode-Codepunkt zurückkehrt statt, wenn Sie ein Unicode-Pass:
>>> ord(u'あ')
12354
Wie können Sie herausfinden, welche Codierung Sie in einer bestimmten Situation verwenden? – Moustache
Die akzeptierte Antwort ist richtig, aber es ist ein schlauer/effizienter Weg, dies zu tun, wenn Sie eine ganze Reihe von ASCII konvertieren Zeichen zu ihren ASCII-Codes gleichzeitig. Statt tun:
for ch in mystr:
code = ord(ch)
oder die etwas schneller:
for code in map(ord, mystr):
konvertieren Sie Python native Typen, die Codes direkt iterieren. Auf Python 3, es ist trivial:
for code in mystr.encode('ascii'):
und auf Python 2.6/2.7, es ist nur etwas mehr beteiligt, weil es keine PY3 Stil bytes
Objekt hat (bytes
ist ein Alias für str
, die iteriert durch Zeichen) , aber sie haben 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'):
Encoding als eine Art, die native iteriert durch die Ordnungs bedeutet die Umwandlung geht viel schneller; in lokalen Tests sowohl auf Py2.7 und Py3.5, Iterieren ein str
, um seine ASCII-Codes zu erhalten unter Verwendung map(ord, mystr)
beginnt etwa doppelt so lange für eine als mit bytearray(mystr)
auf Py2 oder mystr.encode('ascii')
auf Py3, und wie die str
wird länger steigt der Multiplikator für map(ord, mystr)
auf ~ 6,5x-7x.
Der einzige Nachteil ist, dass die Umstellung auf einmal, so dass Ihre erste Ergebnis könnte etwas länger dauern, und eine wirklich enorme str
würde eine verhältnismäßig große temporäre bytes
/bytearray
, aber es sei denn, dies zwingt Sie in Seite Dreschen, Das dürfte nicht wichtig sein.
- 1. Unicode-Block eines Zeichens in Python
- 2. Konvertieren eines Zeichens in keycode
- 3. Zeiger eines Zeichens in C++
- 4. Preprocessor stringificaton eines Zeichens
- 5. Finde das letzte Vorkommen eines Zeichens in der Zeichenkette Python
- 6. Ersetzen eines einzelnen Zeichens durch einen Teilstring in Python 3
- 7. Überprüfen eines Zeichens als Newline
- 8. Einfügen eines Zeichens als Token
- 9. Implementierung eines benutzerdefinierten Zeichens in Android
- 10. Suchen eines bestimmten Zeichens in SQL-Anweisung
- 11. Anzahl der Vorkommen eines Zeichens in NSString
- 12. Entfernen eines Zeichens in einer Zeichenfolge nacheinander
- 13. Binärdarstellung eines Zeichens in C drucken
- 14. Einfügen eines Zeichens vor jeder Instanz eines bestimmten Zeichens in vi
- 15. Löschen des Bildschirms durch Drucken eines Zeichens?
- 16. Hinzufügen eines Zeichens in der Mitte eines Strings
- 17. Einfügen eines Zeichens in den Textkörper eines Absatzes
- 18. Laufzeitausnahme beim Drucken eines Unicode-Zeichens
- 19. PHP Verwendung von Unicode eines Zeichens
- 20. Suchen und Ersetzen eines nicht druckbaren Zeichens
- 21. Löschen des Zeichens vom Ende eines Arrays
- 22. Löschen eines Zeichens auf dem Bildschirm
- 23. Eine Funktion zum Zurückgeben eines Zeichens
- 24. Verwenden von Regex ODER Ersetzen eines Zeichens
- 25. Ersetzen eines Zeichens durch eine neue Zeile in einer Zeichenfolge in einer Liste in Python
- 26. Den umgebenden Satz eines Zeichens/Wortes in einer Zeichenkette finden
- 27. Finden Sie das Unicode-Skript eines Zeichens
- 28. Entfernen eines Zeichens aus einer Zeichenfolge
- 29. Setzen eines Zeichens Char 'durch Index
- 30. Regex - falsches Auswählen eines zusätzlichen Zeichens
welche encodierung in chr mit? – njzk2
@ njzk2: 'latin1' (das ist keine geniale Sache, wenn dein ursprüngliches Byte in" cp1251 "geschrieben wurde (kyrillisch) –
Beachte, dass chr in Python 3 auch unichr ist. ' chr (31415) -> '窷' ' – William