如何使用 Python 获得所有 ASCII 字符的列表?

我在寻找类似下面这样的东西:

import ascii


print(ascii.charlist())

返回类似 ["A", "B", "C", "D" ... ]的值。

200440 次浏览

string模块中的常数可能就是您想要的。

所有 ASCII 大写字母:

>>> import string
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

所有 可打印 ASCII 字符:

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

对于 ASCII 标准中定义的每个字符,使用 chr:

>>> ''.join(chr(i) for i in range(128))
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f'
for i in range(0, 128):
print(chr(i))

这就是:

[chr(i) for i in range(128)]

由于 ASCII 可打印字符是一个非常小的列表(字节值介于32和126之间) ,所以在需要时很容易生成:

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

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

ASCII 定义了128个字符,其字节值范围从0到127(包括0到127)。所以要得到一个包含所有 ASCII 字符的字符串,你只需要

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

其中只有100个被认为是可打印的。可打印的 ASCII 字符可以通过

import string
string.printable

不,没有,但你可以很容易地做一个:

    #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

您可以在没有模块的情况下完成此操作:

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

键入 characters,它应该打印 ["a","b","c", ... ,"x","y","z"]。大写使用:

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

任何范围(包括使用范围步骤)都可以用于此目的,因为它使用 Unicode。因此,增加 range()以向列表中添加更多字符。
map()range()的每个迭代中调用 chr()