21

是否有一个字段或函数可以返回 python 标准库中的所有 ASCII 字符?

4

4 回答 4

30

你可以做一个。

ASCII = ''.join(chr(x) for x in range(128))

如果您需要检查会员资格,还有其他方法可以做到:

if c in ASCII:
    # c is an ASCII character

if c <= '\x7f':
    # c is an ASCII character

如果要检查整个字符串是否为 ASCII:

def is_ascii(s):
    """Returns True if a string is ASCII, False otherwise."""
    try:
        s.encode('ASCII')
        return True
    except UnicodeEncodeError:
        return False
于 2013-07-29T04:16:50.937 回答
20

您可以使用该string模块:

import string
print string.printable

这使:

'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
于 2013-07-29T04:17:25.877 回答
2

我不知道任何包含的 python 模块具有这样的属性。但是,最简单和最短的方法可能就是自己创建它

standard_ascii = [chr(i) for i in xrange(128)]

或者

extended_ascii = [chr(i) for i in xrange(256)]

用于扩展的 ascii 字符列表。

注意

import string
string.printable

不包括所有 127 个标准 ascii 字符,您可以通过

len(string.printable)
> 100

如果您希望它们作为字符串而不是列表,只需添加一个"".join(),如下所示:

extended_ascii = "".join([chr(i) for i in xrange(256)])
于 2013-07-29T04:38:38.670 回答
2

您可以使用 Python 标准库模块curses.ascii。一些包含的功能包括:

curses.ascii.isascii() # Checks for a character value in the 7-bit ASCII set.
curses.ascii.iscntrl() # Checks for an ASCII control character (in the range 0x00 to 0x1f).
curses.ascii.isalpha() # Check for an ASCII alphabetic character.

从文档中:

curses.ascii模块为 ASCII 字符和函数提供名称常量以测试各种 ASCII 字符类中的成员资格。

请注意,该curses模块在 Windows 系统上可能不可用:

curses模块提供了curses 库的接口,该库是便携式高级终端处理的事实标准。

虽然 curses 在 Unix 环境中使用最广泛,但也有适用于 DOS、OS/2 和可能的其他系统的版本。此扩展模块旨在匹配 ncurses 的 API,ncurses 是一个托管在 Linux 上的开源 curses 库和 Unix 的 BSD 变体。

于 2013-07-29T13:22:10.687 回答