¿Cómo obtener el valor ASCII de un personaje?

¿Cómo obtengo el valor ASCII de un carácter como un int en Python ?

Desde aqui

La función ord () obtendría el valor int del char. Y en caso de que quiera volver a convertir después de jugar con el número, la función chr () hace el truco.

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

En Python 2, también está la función unichr , que devuelve el carácter Unicode cuyo ordinal es el argumento unichr :

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

En Python 3 puedes usar chr lugar de unichr .


ord () – Documentación de Python 3.6.5rc1

ord () – Documentación de Python 2.7.14

Tenga en cuenta que ord() no le proporciona el valor ASCII per se; te da el valor numérico del carácter en cualquier encoding en la que se encuentre. Por lo tanto, el resultado de ord('ä') puede ser 228 si estás usando Latin-1, o puede boost un TypeError si estás usando UTF- 8. Incluso puede devolver el punto de código Unicode si le pasas un código Unicode:

 >>> ord(u'あ') 12354 

Estás buscando:

 ord() 

La respuesta aceptada es correcta, pero hay una manera más inteligente / eficiente de hacerlo si necesita convertir un montón de caracteres ASCII a sus códigos ASCII a la vez. En lugar de hacer:

 for ch in mystr: code = ord(ch) 

o un poco más rápido:

 for code in map(ord, mystr): 

usted convierte a los tipos nativos de Python que iteran los códigos directamente. En Python 3, es trivial:

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

y en Python 2.6 / 2.7, solo está un poco más involucrado porque no tiene un objeto de bytes estilo Py3 ( bytes es un alias para str , que se itera por carácter), pero sí tienen 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'): 

La encoding como un tipo que se itera de forma nativa por ordinal significa que la conversión va mucho más rápido; en las pruebas locales tanto en Py2.7 como en Py3.5, la iteración de una str para obtener sus códigos ASCII usando map(ord, mystr) comienza tomando aproximadamente el doble de tiempo para una len 10 str que usando bytearray(mystr) en Py2 o mystr.encode('ascii') en Py3, y a medida que el str hace más largo, el multiplicador pagado por map(ord, mystr) aumenta a ~ 6.5x-7x.

El único inconveniente es que la conversión es de una sola vez, por lo que su primer resultado puede tardar un poco más, y una str realmente enorme tendrá un bytes / bytes temporal temporal proporcionalmente grande, pero a menos que esto lo obligue a pasar a la página, esto no es probable que importe