获取美国ASCII字符集 - Python

0 投票
3 回答
1228 浏览
提问于 2025-04-17 16:28

我知道可以使用 ordunichr 这两个内置的 Python 函数来获取字符的 Unicode 编码,以及从 Unicode 编码得到字符。不过,我想知道有没有一个函数或者 API 可以让我在 Python 中访问所有可能的 ASCII 字符列表?

换句话说,我能不能通过某个函数调用来获取这个列表,像 这里 的内容?

谢谢!

3 个回答

1

有没有一个列表,列出我可以通过调用某个函数或API在Python中访问的所有可能的ASCII字符?

没有内置的支持,但你可以用几个内置的功能自己做一个。

map(unichr, range(128))

如果你使用的是Python 3.X,因为没有区分unicode和非unicode字符,你需要用到chr函数。另外,map会返回一个map对象,这个对象需要转换成list类型。

list(map(chr, range(128)))

如果你需要一个包含所有ASCII字符的字符串,你可以把两个结果列表合并起来。

''.join(map(unichr, range(128)))

''.join(map(chr, range(128)))
2
>>> from unicodedata import name, category
>>> for i in range(128):
    c = unichr(i)
    print hex(i), i, category(c), name(c, '--')


0x0 0 Cc --
0x1 1 Cc --
0x2 2 Cc --
0x3 3 Cc --
0x4 4 Cc --
0x5 5 Cc --
0x6 6 Cc --
0x7 7 Cc --
0x8 8 Cc --
0x9 9 Cc --
0xa 10 Cc --
0xb 11 Cc --
0xc 12 Cc --
0xd 13 Cc --
0xe 14 Cc --
0xf 15 Cc --
0x10 16 Cc --
0x11 17 Cc --
0x12 18 Cc --
0x13 19 Cc --
0x14 20 Cc --
0x15 21 Cc --
0x16 22 Cc --
0x17 23 Cc --
0x18 24 Cc --
0x19 25 Cc --
0x1a 26 Cc --
0x1b 27 Cc --
0x1c 28 Cc --
0x1d 29 Cc --
0x1e 30 Cc --
0x1f 31 Cc --
0x20 32 Zs SPACE
0x21 33 Po EXCLAMATION MARK
0x22 34 Po QUOTATION MARK
0x23 35 Po NUMBER SIGN
0x24 36 Sc DOLLAR SIGN
0x25 37 Po PERCENT SIGN
0x26 38 Po AMPERSAND
0x27 39 Po APOSTROPHE
0x28 40 Ps LEFT PARENTHESIS
0x29 41 Pe RIGHT PARENTHESIS
0x2a 42 Po ASTERISK
0x2b 43 Sm PLUS SIGN
0x2c 44 Po COMMA
0x2d 45 Pd HYPHEN-MINUS
0x2e 46 Po FULL STOP
0x2f 47 Po SOLIDUS
0x30 48 Nd DIGIT ZERO
0x31 49 Nd DIGIT ONE
0x32 50 Nd DIGIT TWO
0x33 51 Nd DIGIT THREE
0x34 52 Nd DIGIT FOUR
0x35 53 Nd DIGIT FIVE
0x36 54 Nd DIGIT SIX
0x37 55 Nd DIGIT SEVEN
0x38 56 Nd DIGIT EIGHT
0x39 57 Nd DIGIT NINE
0x3a 58 Po COLON
0x3b 59 Po SEMICOLON
0x3c 60 Sm LESS-THAN SIGN
0x3d 61 Sm EQUALS SIGN
0x3e 62 Sm GREATER-THAN SIGN
0x3f 63 Po QUESTION MARK
0x40 64 Po COMMERCIAL AT
0x41 65 Lu LATIN CAPITAL LETTER A
0x42 66 Lu LATIN CAPITAL LETTER B
0x43 67 Lu LATIN CAPITAL LETTER C
0x44 68 Lu LATIN CAPITAL LETTER D
0x45 69 Lu LATIN CAPITAL LETTER E
0x46 70 Lu LATIN CAPITAL LETTER F
0x47 71 Lu LATIN CAPITAL LETTER G
0x48 72 Lu LATIN CAPITAL LETTER H
0x49 73 Lu LATIN CAPITAL LETTER I
0x4a 74 Lu LATIN CAPITAL LETTER J
0x4b 75 Lu LATIN CAPITAL LETTER K
0x4c 76 Lu LATIN CAPITAL LETTER L
0x4d 77 Lu LATIN CAPITAL LETTER M
0x4e 78 Lu LATIN CAPITAL LETTER N
0x4f 79 Lu LATIN CAPITAL LETTER O
0x50 80 Lu LATIN CAPITAL LETTER P
0x51 81 Lu LATIN CAPITAL LETTER Q
0x52 82 Lu LATIN CAPITAL LETTER R
0x53 83 Lu LATIN CAPITAL LETTER S
0x54 84 Lu LATIN CAPITAL LETTER T
0x55 85 Lu LATIN CAPITAL LETTER U
0x56 86 Lu LATIN CAPITAL LETTER V
0x57 87 Lu LATIN CAPITAL LETTER W
0x58 88 Lu LATIN CAPITAL LETTER X
0x59 89 Lu LATIN CAPITAL LETTER Y
0x5a 90 Lu LATIN CAPITAL LETTER Z
0x5b 91 Ps LEFT SQUARE BRACKET
0x5c 92 Po REVERSE SOLIDUS
0x5d 93 Pe RIGHT SQUARE BRACKET
0x5e 94 Sk CIRCUMFLEX ACCENT
0x5f 95 Pc LOW LINE
0x60 96 Sk GRAVE ACCENT
0x61 97 Ll LATIN SMALL LETTER A
0x62 98 Ll LATIN SMALL LETTER B
0x63 99 Ll LATIN SMALL LETTER C
0x64 100 Ll LATIN SMALL LETTER D
0x65 101 Ll LATIN SMALL LETTER E
0x66 102 Ll LATIN SMALL LETTER F
0x67 103 Ll LATIN SMALL LETTER G
0x68 104 Ll LATIN SMALL LETTER H
0x69 105 Ll LATIN SMALL LETTER I
0x6a 106 Ll LATIN SMALL LETTER J
0x6b 107 Ll LATIN SMALL LETTER K
0x6c 108 Ll LATIN SMALL LETTER L
0x6d 109 Ll LATIN SMALL LETTER M
0x6e 110 Ll LATIN SMALL LETTER N
0x6f 111 Ll LATIN SMALL LETTER O
0x70 112 Ll LATIN SMALL LETTER P
0x71 113 Ll LATIN SMALL LETTER Q
0x72 114 Ll LATIN SMALL LETTER R
0x73 115 Ll LATIN SMALL LETTER S
0x74 116 Ll LATIN SMALL LETTER T
0x75 117 Ll LATIN SMALL LETTER U
0x76 118 Ll LATIN SMALL LETTER V
0x77 119 Ll LATIN SMALL LETTER W
0x78 120 Ll LATIN SMALL LETTER X
0x79 121 Ll LATIN SMALL LETTER Y
0x7a 122 Ll LATIN SMALL LETTER Z
0x7b 123 Ps LEFT CURLY BRACKET
0x7c 124 Sm VERTICAL LINE
0x7d 125 Pe RIGHT CURLY BRACKET
0x7e 126 Sm TILDE
0x7f 127 Cc --

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

3

底下的128个Unicode编码点其实就是ASCII码,所以只要你把数值限制在0到127之间,使用unichr(在Python 3中可以用chr)就没问题。

比如,下面这个Python 2.6.6的程序(虽然有点老,但我觉得这种写法更适合教学):

print " | 0 1 2 3 4 5 6 7 8 9 A B C D E F"
print "-+--------------------------------"

for row in range(2,8):
    s = "%d|"%(row)
    for col in range(0,16):
        if row != 7 or col != 15:                   # 7F is non-printable
            s = "%s %s"%(s,unichr(row * 16 + col))
    print s

它会为你输出ASCII表(当然只是可打印的部分):

 | 0 1 2 3 4 5 6 7 8 9 A B C D E F
-+--------------------------------
2|   ! " # $ % & ' ( ) * + , - . /
3| 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4| @ A B C D E F G H I J K L M N O
5| P Q R S T U V W X Y Z [ \ ] ^ _
6| ` a b c d e f g h i j k l m n o
7| p q r s t u v w x y z { | } ~

撰写回答