【发布时间】:2013-07-29 04:15:33
【问题描述】:
python的标准库中是否有一个字段或函数可以返回所有的ASCII字符?
【问题讨论】:
标签: python
python的标准库中是否有一个字段或函数可以返回所有的ASCII字符?
【问题讨论】:
标签: python
你可以做一个。
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
【讨论】:
您可以使用string 模块:
import string
print string.printable
给出:
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
【讨论】:
我不知道任何包含的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)])
【讨论】:
chr(128) 是 \0x80 在 Unicode 中是一些奇怪的 pad 字符。您通过chr(8364) 获得€。感知问题是chr()在其他语言中被键控为ascii,但在Python中被键控为Unicode。注:我只是在编写了与上面非常相似的代码后才意识到这一点,后来发现它无法匹配我期望它找到的某些字符。
您可以使用 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 变体。
【讨论】: