【问题标题】:How do I get a list of all the ASCII characters using Python?如何使用 Python 获取所有 ASCII 字符的列表?
【发布时间】:2011-08-18 23:40:18
【问题描述】:

我正在寻找类似以下的内容:

import ascii

print(ascii.charlist())

这会返回类似["A", "B", "C", "D" ... ]

【问题讨论】:

    标签: python ascii


    【解决方案1】:

    ASCII 定义了 128 个字符,其字节值范围从 0 到 127(含)。因此,要获取所有 ASCII 字符的字符串,您可以这样做

    ''.join(chr(i) for i in range(128))
    

    其中只有 100 个被认为是可打印的。可通过以下方式访问可打印的 ASCII 字符

    import string
    string.printable
    

    【讨论】:

      【解决方案2】:

      你可以在没有模块的情况下做到这一点:

      characters = list(map(chr, range(97, 123)))
      

      输入characters,它应该打印["a","b","c", ... ,"x","y","z"]。对于大写使用:

      characters = list(map(chr, range(65, 91)))
      

      任何范围(包括使用范围步骤)都可以用于此,因为它使用 Unicode。因此,增加range() 以将更多字符添加到列表中。
      map()range() 的每次迭代中调用chr()

      【讨论】:

        【解决方案3】:
        for i in range(0, 128):
            print(chr(i))
        

        【讨论】:

        • ASCII 将是 range(0, 128)
        • @dan04 @lucemia ASCII 从0到127,扩展码最多255
        • @Andrey:ASCII 是从 0 到 127,所以 Python 中的 range(0, 128) 。 (其他几个答案中的常见错误......)
        【解决方案4】:

        由于 ASCII 可打印字符是一个非常小的列表(值介于 32 和 126 之间的字节),因此很容易在需要时生成:

        >>> for c in (chr(i) for i in range(32, 127)):
        ...     print(c)
        ... 
         
        !
        "
        #
        $
        %
        ... # a few lines removed :)
        y
        z
        {
        |
        }
        ~
        

        【讨论】:

          【解决方案5】:

          string module 中的常量可能是你想要的。

          所有 ASCII 大写字母:

          >>> import string
          >>> string.ascii_uppercase
          'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
          

          所有printable ASCII 字符:

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

          对于ASCII standard 中定义的每个字符,使用chr

          >>> ''.join(chr(i) for i in range(128))
          '\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'
          

          【讨论】:

            【解决方案6】:

            这里是:

            [chr(i) for i in range(128)]
            

            【讨论】:

            • 对于那些好奇的人,sorted({chr(i) for i in range(128)} - set(string.printable))['\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x0e', '\x0f', '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', '\x7f']
            【解决方案7】:

            不,没有,但您可以轻松制作:

                #Your ascii.py program:
                def charlist(begin, end):
                    charlist = []
                    for i in range(begin, end):
                        charlist.append(chr(i))
                    return ''.join(charlist)
            
                #Python shell:
                #import ascii
                #print(ascii.charlist(50, 100))
                #Comes out as:
            
                #23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc
            

            【讨论】:

            • the accepted answer 明确提及string.printable 三年后,您声称“不,没有”?
            猜你喜欢
            • 2015-06-01
            • 2021-09-27
            • 1970-01-01
            • 1970-01-01
            • 2018-07-21
            • 2023-01-23
            • 2013-06-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多