¿Existe una biblioteca de Python que contenga una lista de todos los caracteres ascii?


98

Algo como a continuación:

import ascii

print ascii.charlist()

Lo que devolvería algo como [A, B, C, D ...]

Respuestas:


162

Las stringconstantes pueden ser lo que quieras. ( docs )

>>> importar cadena
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTU VWXYZ'

Si desea todos los caracteres imprimibles:

>>> cadena.imprimible
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ! "# $% & \' () * +, -. /:;? @ [\\] ^ _` {|} ~ \ t \ n \ r \ x0b \ x0c '

3
Creo que es un poco confuso, ASCII no es de aa zsino de 0 a 127 códigos, que no son solo letras.
Andrey

4
string.ascii_letterses todo el tinglado!
jathanismo

1
@jathanism - O simplemente string.letters... string.printableestá más cerca (pero no lo mismo) a lo que @Andrey se refería, sin embargo.
Joe Kington

Supongo que depende de si el OP realmente necesita cada carácter. string.printableda todos los caracteres imprimibles.
Bellota

El título de la pregunta es claro (y se refiere a todo el conjunto ASCII) pero en el ejemplo parece que OP realmente quiere letras.
Andrey

32

Aquí está:

[chr(i) for i in xrange(127)]

Dado que el Stringmódulo está obsoleto, esta es la mejor respuesta
Devon M

@ChuckFulminata, el stringmódulo no está obsoleto. Vea esto , por ejemplo.
dkasak

@dkasak Genial gracias, lo olvidé, el stringmódulo solo está parcialmente obsoleto
Devon M

1
Recuerde también que en Python 3 debe llamar range(127), ya que rangefue eliminado y xrangerenombrado. Además, para obtener caracteres Unicode en Python 2, debe llamar, unichr(i)pero en Python 3 simplementechr(i)
Benj

1
¿No debería ser rango (128) para 0-127?
Anadact el

14

ASCII define 128 caracteres cuyos valores de bytes van de 0 a 127 inclusive. Entonces, para obtener una cadena de todos los caracteres ASCII, puede hacer

''.join([chr(i) for i in range(128)])

Sin embargo, solo algunos de ellos son imprimibles; se puede acceder a los caracteres ASCII imprimibles en Python a través de

import string
string.printable

4

Dado que los caracteres imprimibles ASCII son una lista bastante pequeña (bytes con valores entre 32 y 127), es bastante fácil de generar cuando se necesita:

>>> for c in (chr(i) for i in range(32,127)):
...     print c
... 

!
"
#
$
%
... # a few lines removed :)
y
z
{
|
}
~

3
for i in range(0,128):
    print chr(i)

¡Prueba esto!


ASCII sería range(0, 128).
dan04

@ dan04 @lucemia ASCII de 0 a 127 , los códigos extendidos son hasta 255
Andrey

3
@Andrey: ASCII es de 0 a 127, por lo que rango (0, 128) en Python. (Un error común en varias otras respuestas ...)
jtniehof

1

Puede hacer esto sin un módulo:

    characters = list(map(chr, range(97,123)))

Escriba charactersy debería imprimir ["a","b","c", ... ,"x","y","z"]. Para uso en mayúsculas:

    characters=list(map(chr,range(65,91)))

Se puede usar cualquier rango (incluido el uso de pasos de rango) para esto, porque hace uso de Unicode. Por lo tanto, aumente range()para agregar más caracteres a la lista.
map()llama a chr()cada iteración del range().


-7

No, no lo hay, pero puedes hacer uno fácilmente:

    #Your ascii.py program:
    def charlist(begin, end):
        charlist = []
        for i in range(begin, end):
            charlist.append(chr(i))
        return ''.join(charlist)

    #Python shell:
    #import ascii
    #print(ascii.charlist(50, 100))
    #Comes out as:

    #23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc

11
Tres años después de que la respuesta aceptada menciona claramente string.printable, ¿afirma "no, no hay"?
Tobias Kienzler
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.