【发布时间】:2011-08-18 23:40:18
【问题描述】:
我正在寻找类似以下的内容:
import ascii
print(ascii.charlist())
这会返回类似["A", "B", "C", "D" ... ]。
【问题讨论】:
我正在寻找类似以下的内容:
import ascii
print(ascii.charlist())
这会返回类似["A", "B", "C", "D" ... ]。
【问题讨论】:
ASCII 定义了 128 个字符,其字节值范围从 0 到 127(含)。因此,要获取所有 ASCII 字符的字符串,您可以这样做
''.join(chr(i) for i in range(128))
其中只有 100 个被认为是可打印的。可通过以下方式访问可打印的 ASCII 字符
import string
string.printable
【讨论】:
你可以在没有模块的情况下做到这一点:
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()。
【讨论】:
for i in range(0, 128):
print(chr(i))
【讨论】:
range(0, 128)。
由于 ASCII 可打印字符是一个非常小的列表(值介于 32 和 126 之间的字节),因此很容易在需要时生成:
>>> for c in (chr(i) for i in range(32, 127)):
... print(c)
...
!
"
#
$
%
... # a few lines removed :)
y
z
{
|
}
~
【讨论】:
string module 中的常量可能是你想要的。
所有 ASCII 大写字母:
>>> import string
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
所有printable ASCII 字符:
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
对于ASCII standard 中定义的每个字符,使用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'
【讨论】:
这里是:
[chr(i) for i in range(128)]
【讨论】:
sorted({chr(i) for i in range(128)} - set(string.printable)) 是 ['\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x0e', '\x0f', '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', '\x7f']
不,没有,但您可以轻松制作:
#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
【讨论】:
string.printable 三年后,您声称“不,没有”?