¿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.