Python:如何导入 ascii 字符

xxm*_*exx 0 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
Run Code Online (Sandbox Code Playgroud)

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

Ash*_*ary 5

整个 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'
Run Code Online (Sandbox Code Playgroud)

如果你想要可打印的 ascii 字符:

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

或者如果你只想要字母:

In [10]: import string

In [11]: string.ascii_letters
Out[11]: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
Run Code Online (Sandbox Code Playgroud)

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'])
Run Code Online (Sandbox Code Playgroud)

ASCII 表

  • @abarnert 我相信很多人都有自己的定义,但是 ASCII“可打印字符”最近在 ANSI X3.4-1986 标准中定义为“ASCII 32-126”,我怀疑 10 个程序员中有 9 个会如果被问到,给你相同的定义,如果仅仅是因为[维基百科是这么说的](http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters)。;-) (2认同)