Frage

Wie bekomme ich die ASCII Wert eines Zeichens als int in Python?

War es hilfreich?

Lösung

hier :

  

Funktion ord () würde den int-Wert erhalten   der Kohle. Und falls Sie zu   konvertieren zurück, nachdem er mit dem Spielen   Nummer, Funktion chr () funktioniert der Trick.

>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>

In Python 2, gibt es auch die unichr Funktion, Rücksendung der Unicode Charakter, dessen Ordnungszahl ist das unichr Argument:

>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'

In Python 3 Sie chr statt unichr verwenden können.


ord () - Python 3.6.5rc1 Dokumentation

ord () - Python 2.7.14 Dokumentation

Andere Tipps

Beachten Sie, dass ord() nicht geben Sie den ASCII-Wert per se; es gibt Ihnen den numerischen Wert des Zeichens in was auch immer Codierung es ist in. Deshalb ist das Ergebnis von ord('ä') 228 sein kann, wenn Sie Latin-1 verwenden, oder es kann eine TypeError zu erhöhen, wenn Sie UTF-8 verwenden. Es kann sogar zurückgeben den Unicode-Codepoint statt, wenn Sie es eine Unicode übergeben:

>>> ord(u'あ')
12354

Sie suchen:

ord()

Die akzeptierte Antwort ist korrekt, aber es gibt noch einen besseren/effizienteren Weg, dies zu tun, wenn Sie brauchen, um zu konvertieren eine ganze Reihe von ASCII-Zeichen in Ihren ASCII-codes auf einmal.Anstatt das zu tun:

for ch in mystr:
    code = ord(ch)

oder die etwas schneller:

for code in map(ord, mystr):

konvertieren Sie Python native Typen, die iterativ die codes direkt.Auf Python 3, es ist trivial:

for code in mystr.encode('ascii'):

und auf Python 2.6/2.7, es ist nur ein bisschen mehr beteiligt, weil es nicht haben eine Py3-Stil bytes object (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'):

Die Kodierung von einem Typ, der nativ iteriert durch Ordnungszahlen bezeichnet die Umwandlung viel schneller geht;in lokalen tests an den beiden Py2.7 und Py3.5, Durchlaufen eine str die ASCII-codes unter Verwendung map(ord, mystr) beginnt, wobei etwa doppelt so lange für eine len 10 str als mit bytearray(mystr) auf Py2 oder mystr.encode('ascii') auf Py3, und als die str wird länger, der Multiplikator bezahlt map(ord, mystr) steigt auf ~6,5 x-7x.

Der einzige Nachteil ist, dass die Konvertierung ist alles auf einmal, so dass Ihre erste Ergebnis vielleicht ein wenig länger dauern, und eine riesige str würde eine proportional große temporäre bytes/bytearray, aber es sei denn, dies zwingt Sie in die Seite Tracht Prügel, das ist nicht wahrscheinlich egal.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top