1036
Von hier aus :
Die Funktion ord () würde den int-Wert des Zeichens erhalten. Und falls Sie nach dem Spielen mit der Zahl wieder konvertieren möchten, erledigt die Funktion chr () den Trick.
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
In Python 2 gibt es auch die unichr
Funktion, die das Unicode- Zeichen zurückgibt, dessen Ordnungszahl das unichr
Argument ist:
>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'
In Python 3 können Sie chr
anstelle von verwenden unichr
.
chr(31415) -> '窷'
chr(ord(u'й'.encode('cp1251'))).decode('cp1251') == u'й'
. In Python 3 (oderunichr
in Python 2) wird die Eingabenummer als Unicode-Codepunkt-Ganzzahl-Ordnungszahl interpretiert:unichr(0x439) == '\u0439'
(Die ersten 256 Ganzzahlen haben dieselbe Zuordnung wie Latin-1 :unichr(0xe9) == b'\xe9'.decode('latin-1')
, die ersten 128 - ASCII:unichr(0x0a) == b'\x0a'.decode('ascii')
Es handelt sich nicht um eine Unicode-Sache Python).Beachten Sie, dass
ord()
Sie nicht den ASCII-Wert an sich erhalten. Es gibt Ihnen den numerischen Wert des Zeichens in der Codierung, in der es sich befindet. Daher kann das Ergebnis vonord('ä')
228 sein, wenn Sie Latin-1 verwenden, oder es kann a auslösen,TypeError
wenn Sie UTF-8 verwenden. Es kann sogar den Unicode-Codepunkt zurückgeben, wenn Sie ihm einen Unicode übergeben:quelle
unicode
Standardmäßig. Python3 ( Bytes ):str(b'\xc3\x9c', 'ascii')
-> löst UnicodeDecodeError aus . Python3 ( Bytes ):str(b'\xc3\x9c', 'utf-8')
-> gibt Ü zurück . Sie können auch in das Sechs- Paket schauen .Du suchst nach:
quelle
Die akzeptierte Antwort ist korrekt, aber es gibt eine cleverere / effizientere Möglichkeit, dies zu tun, wenn Sie eine ganze Reihe von ASCII-Zeichen gleichzeitig in ihre ASCII-Codes konvertieren müssen. Anstatt zu tun:
oder das etwas schneller:
Sie konvertieren in native Python-Typen, die die Codes direkt iterieren. Unter Python 3 ist es trivial:
und in Python 2.6 / 2.7 ist es nur geringfügig komplizierter, da es kein
bytes
Objekt im Py3-Stil hat (bytes
ist ein Alias fürstr
, der nach Zeichen iteriert), aber sie habenbytearray
:Das Codieren als Typ, der nativ durch Ordnungszahlen iteriert, bedeutet, dass die Konvertierung viel schneller erfolgt. in lokalen Tests sowohl Py2.7 und Py3.5, ein Iterieren
str
seiner ASCII - Codes zu erhaltenmap(ord, mystr)
für eine beginnt etwa doppelt so lange unterlen
10str
als die Verwendung vonbytearray(mystr)
auf Py2 odermystr.encode('ascii')
auf PY3, und wie diestr
länger wird, der Multiplikator für bezahltemap(ord, mystr)
steigen bis ~ 6,5x-7x.Der einzige Nachteil ist , dass die Umstellung auf einmal, so dass Ihre erste Ergebnis ein wenig länger dauern könnte, und ein wirklich enorm
str
eine verhältnismäßig große temporäre würdebytes
/bytearray
, aber es sei denn , dies zwingt Sie in Seite Dreschen, dann ist dies wahrscheinlich nicht Sache .quelle
Um den ASCII-Code eines Zeichens abzurufen, können Sie die
ord()
Funktion verwenden.Hier ist ein Beispielcode:
Ausgabe:
quelle