1038
Desde aquí :
La función ord () obtendría el valor int del char. Y en caso de que desee 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 existe la unichr
función, que devuelve el carácter Unicode cuyo ordinal es el unichr
argumento:
>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'
En Python 3 puedes usar en chr
lugar de unichr
.
chr(31415) -> '窷'
chr(ord(u'й'.encode('cp1251'))).decode('cp1251') == u'й'
. En Python 3 (ounichr
en Python 2), el número de entrada se interpreta como ordinal entero de punto de código Unicode:unichr(0x439) == '\u0439'
(los primeros 256 enteros tienen el mismo mapeo que latin-1:unichr(0xe9) == b'\xe9'.decode('latin-1')
el primer 128 - ascii:unichr(0x0a) == b'\x0a'.decode('ascii')
es una cosa Unicode, no Pitón).Tenga en cuenta que
ord()
no le da el valor ASCII per se; le da el valor numérico del carácter en cualquier codificación en la que se encuentre. Por lo tanto, el resultadoord('ä')
puede ser 228 si está usando Latin-1, o puede aumentar aTypeError
si está usando UTF-8. Incluso puede devolver el punto de código Unicode si lo pasa como unicode:fuente
unicode
por defecto. Python3 ( bytes ):str(b'\xc3\x9c', 'ascii')
-> genera UnicodeDecodeError . Python3 ( bytes ):str(b'\xc3\x9c', 'utf-8')
-> devuelve Ü . También puede consultar los seis paquetes.Estás buscando:
fuente
La respuesta aceptada es correcta, pero hay una manera más inteligente / eficiente de hacer esto si necesita convertir un montón de caracteres ASCII a sus códigos ASCII a la vez. En lugar de hacer:
o el un poco más rápido:
convierte a los tipos nativos de Python que iteran los códigos directamente. En Python 3, es trivial:
y en Python 2.6 / 2.7, solo está un poco más involucrado porque no tiene un
bytes
objeto de estilo Py3 (bytes
es un alias parastr
, que itera por carácter), pero tienenbytearray
:Codificar como un tipo que itera nativamente por ordinal significa que la conversión es mucho más rápida; en pruebas locales tanto en Py2.7 como en Py3.5, la iteración de a
str
para obtener sus códigos ASCII usandomap(ord, mystr)
comienza tomando aproximadamente el doble de tiempo por unlen
10str
que el usobytearray(mystr)
en Py2 omystr.encode('ascii')
Py3, y a medida questr
se alarga, el multiplicador paga pormap(ord, mystr)
aumentos a ~ 6.5x-7x.El único inconveniente es que la conversión es a la vez, por lo que su primer resultado podría tardar un poco más, y una verdaderamente enorme
str
tendría un proporcionalmente grandes temporalesbytes
/bytearray
, pero a menos que las fuerzas de esta página en goleada, esto no es probable que importa .fuente
Para obtener el código ASCII de un personaje, puede usar la
ord()
función.Aquí hay un código de ejemplo:
Salida:
fuente