Python:如何导入ascii字符

时间:2013-04-19 18:05:38

标签: python ascii python-2.x

对于我正在制作的电子邮件客户端的密码输入字段,我认为让密码显示随机字符会很酷。由于我想要写下所有ascii字符的字典,我想知道是否有一个模块可以导入以获取它。我对代码的看法如下:

import random
import char_set #All ascii characters

def random_char():

    char_select = random.randrange(len(char_set))

    char_choice = char_set[char_select]

    return char_choice

注意:当我在Mac OSX,Windows和Debian(Raspberry Pi)上运行时,这必须是跨平台的。

2 个答案:

答案 0 :(得分:3)

整个ASCII集:

In [22]: "".join(chr(x) for x in range(128))
Out[22]: '\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'

如果您需要可打印的ascii字符:

In [9]: "".join(chr(x) for x in range(32,127))
Out[9]: ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'

或者如果您只想要字母:

In [10]: import string

In [11]: string.ascii_letters
Out[11]: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

string.printable也是一个选项,它包含5个不在范围内的额外字符(32,127):

In [39]: s1=set(x for x in string.printable)

In [40]: s2=set(chr(x) for x in range(32,127))

In [41]: s1-s2
Out[41]: set(['\t', '\x0b', '\n', '\r', '\x0c'])

ASCII Table

答案 1 :(得分:2)

string模块包含一些您可以使用的常量:string.lettersstring.numbersstring.punctuation等等。string.printable似乎很大程度上与您有关想。

如果您不想使用模块,只需执行printable_chars = "".join(chr(c) for c in xrange(33, 127))(这会故意排除空间和rubout)。