说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 的内置函数 ascii(object) 与 repr() 类似返回一个字符串,表示对象的可打印 ASCII 码形式。非 ASCII 字符会用 \x、\u 和 \U 进行转义。生成的字符串类似于 Python 2 中 repr() 的返回结果。
它的语法非常简单,ascii(object)
直接传入对象即可,对于对象中没 ascii 码的内容,会用 \x、\u 和 \U 进行转义。
ASCII 是用于信息交换的美国标准代码(American Standard Code )。它是给不同字符和符号的数值,供计算机存储和操作。例如,字母“A”的 ASCII 值为 65。它是最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。ASCII 第一次以规范标准的类型发表是在1967年,最后一次更新则是在 1986 年,到目前为止共定义了 128 个字符。
Python 在 2.0 时期变量名仅支持 ASCII 范围内的字符,到了 Python 3.0 时代允许 Unicode 范围作为变量名及名字空间的名称,这对汉语及其其他语法的用户提供了便利,意味着我们在定义变量、函数名、类名等场景下都可以使用汉字串、表情符号、标志符号等。
与 ascii()
相关的,Python 还有两个内置函数:
ord(c)
:给定一个表示一个 Unicode 字符的字符串,返回一个表示该字符的 Unicode 码点的整数。例如 ord('a') 返回整数 97, ord('€') (欧元符号)返回 8364 。chr(i)
:返回表示 Unicode 码位为整数 i 的字符的字符串。例如,chr(97) 返回字符串 'a',chr(8364) 返回字符串 '€'。这是 ord() 的逆函数。实参的合法范围是 0 到 1,114,111(16 进制表示是 0x10FFFF)。如果 i 超过这个范围,会触发 ValueError 异常。要注意的是:
ord(c)
:c 为一个字符串,返回一个整数,这个整数为 Unicode 码位编号chr(i)
:i 一个整数(有上述范围限制),返回码位编号为这个整数的 Unicode 字符串它们两个互为逆函数。
Unicode 也是一种为字符提供唯一数字的编码技术。虽然 ASCII 仅编码128个字符,但当前的 Unicode 有来自数百个文字符号系统的 100000 多个字符。
ascii(123)
# '123'
ascii('盖若')
# "'\\u76d6\\u82e5'"
Languages = ['pythØn','C++','Go']
ascii(Languages)
# "['pyth\\xd8n', 'C++', 'Go']"
# 字符
c = 'G'
# ASCII 码
a = 99
print(c, " 的ASCII 码为", ord(c))
print(a, " 对应的字符为", chr(a))
'''
G 的ASCII 码为 71
99 对应的字符为 c
'''
ASCII编码是1个字节,而Unicode编码通常是2个字节。
字母A用ASCII编码是十进制的65,二进制的01000001;而在Unicode中,只需要在前面补0,即为:00000000 01000001。
新的问题:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
UTF-8 的编码规对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。
更新时间:Nov. 11, 2021, 12:01 p.m. 标签:python ascii