【问题标题】:Is there a list of all ASCII characters in python's standard library? [duplicate]python的标准库中是否有所有ASCII字符的列表? [复制]
【发布时间】:2013-07-29 04:15:33
【问题描述】:

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

【问题讨论】:

    标签: python


    【解决方案1】:

    你可以做一个。

    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
    

    【讨论】:

    • 我实际上一直在寻找这个答案,但请注意,您在这里所做的并不是很明显。
    【解决方案2】:

    您可以使用string 模块:

    import string
    print string.printable
    

    给出:

    '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
    

    【讨论】:

    • 我不能肯定这不是他们想要的,但 ASCII 也定义了几个不可打印的字符。
    • 从技术上讲,这是回答问题的唯一答案。 string.printable 是一个变量(或者为了问题的目的,实际上是这样,如果它不是字面意思的话)。
    【解决方案3】:

    我不知道任何包含的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)])
    

    【讨论】:

    • 以前可能被称为“扩展 ASCII”的东西现在是许多可能的字符集之一,它们(大部分)都是互斥的。所以真的没有“扩展ASCII”这样的东西。
    • 那我们也许会更准确地谈谈 7 位和 8 位 ASCII
    • 我不确定“扩展 ASCII”是否可以使用上述方法 - 例如,扩展 ascii (Windows-1252) 中的第一个字符是欧元字符 €,但第一个字符由chr(128)\0x80 在 Unicode 中是一些奇怪的 pad 字符。您通过chr(8364) 获得€。感知问题是chr()在其他语言中被键控为ascii,但在Python中被键控为Unicode。注:我只是在编写了与上面非常相似的代码后才意识到这一点,后来发现它无法匹配我期望它找到的某些字符。
    【解决方案4】:

    您可以使用 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 变体。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      相关资源
      最近更新 更多