1312 Stimmen

Wie man den ASCII-Wert eines Zeichens erhält

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

1734voto

Matt J Punkte 41229

Von aquí :

Die Funktion ord() erhält den int-Wert des Zeichens. Und für den Fall, dass Sie zurück konvertieren wollen, nachdem Sie mit der Zahl, Funktion chr() erfüllt den Zweck.

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

In Python 2 gab es auch die unichr Funktion, die die Unicode Zeichen, dessen Ordnungszahl die unichr Argument:

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

In Python 3 können Sie chr anstelle von unichr .


ord() - Python 3.6.5rc1 Dokumentation

ord() - Python 2.7.14 Dokumentation

0 Stimmen

Welche Kodierung wird in chr verwendet?

0 Stimmen

@njzk2: latin1 (was nicht gerade brillant ist, wenn das ursprüngliche Byte in (sagen wir) cp1251 (Kyrillisch)

24 Stimmen

Beachten Sie, dass chr in Python 3 auch als unichr fungiert. chr(31415) -> ''

188voto

Beachten Sie, dass ord() gibt Ihnen nicht den ASCII-Wert an sich, sondern den numerischen Wert des Zeichens in der jeweiligen Kodierung. Daher ist das Ergebnis von ord('ä') kann 228 sein, wenn Sie Latin-1 verwenden, oder es kann ein TypeError wenn Sie UTF-8 verwenden. Er kann sogar den Unicode-Codepunkt zurückgeben, wenn Sie ihm einen Unicode übergeben:

>>> ord(u'')
12354

17 Stimmen

Wie können Sie herausfinden, welche Kodierung Sie in einer bestimmten Situation verwenden?

3 Stimmen

@Moustache : In Python3 werden Sie Unicode sofort verwenden können.

2 Stimmen

Abhängig von der Objekttyp . Python3 ( str ): unicode standardmäßig. Python3 ( Bytes ): str(b'\xc3\x9c', 'ascii') -> erhebt UnicodeDecodeError . Python3 ( Bytes ): str(b'\xc3\x9c', 'utf-8') -> kehrt zurück Ü . Sie können sich auch über die sechs Paket.

65voto

Jacob Krall Punkte 26956

Sie suchen nach:

ord()

47voto

ShadowRanger Punkte 120358

Die akzeptierte Antwort ist richtig, aber es gibt einen clevereren/effizienteren Weg, dies zu tun, wenn Sie eine ganze Reihe von ASCII-Zeichen auf einmal in ihre ASCII-Codes umwandeln müssen. Anstatt zu tun:

for ch in mystr:
    code = ord(ch)

oder die etwas schnellere:

for code in map(ord, mystr):

konvertieren Sie in Python-eigene Typen, die die Codes direkt iterieren. In Python 3 ist das trivial:

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

und unter Python 2.6/2.7 ist es nur geringfügig komplizierter, weil es keinen Py3-Stil hat bytes Objekt ( bytes ist ein Alias für str (die nach Zeichen iteriert), 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 als Typ, der nativ nach Ordnungszahlen iteriert, bedeutet, dass die Konvertierung viel schneller geht; in lokalen Tests sowohl mit Py2.7 als auch mit Py3.5 wurde die Iteration einer str um seine ASCII-Codes zu erhalten, indem man map(ord, mystr) dauert anfangs 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 länger wird, wird der Multiplikator, der für map(ord, mystr) auf ~6,5x-7x ansteigt.

Der einzige Nachteil ist, dass die Umwandlung auf einmal erfolgt, so dass das erste Ergebnis etwas länger dauern kann und eine wirklich enorme str würde eine verhältnismäßig große vorübergehende bytes / bytearray aber solange Sie das nicht zu einem Seitenwechsel zwingt, ist das wahrscheinlich nicht von Bedeutung.

7voto

Indi Punkte 329

Um den ASCII-Code eines Zeichens zu erhalten, können Sie die Funktion ord() Funktion.

Hier ist ein Beispielcode:

value = input("Your value here: ")
list=[ord(ch) for ch in value]
print(list)

Ausgabe:

Your value here: qwerty
[113, 119, 101, 114, 116, 121]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X