说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 的 ord() 是将单个字符转 Unicode 码点,chr() 将 Unicode 码点转为字符, 它们两个互为逆函数。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 多个字符。
以下是一些示例:
ord('a')
# 97
ord('¥') # 人民币符号
# 165
ord('美国') # 多个字符
# TypeError: ord() expected a character, but string of length 2 found
chr(97)
# 'a'
chr(165)
# '¥'
chr(1_114_112) # 大于 1_114_111
# ValueError: chr() arg not in range(0x110000)
以上。
关于这两个方法的单词全写:
ord(c)
中的 ord 代表 "ordinal"(序数)。可能 ord 最早的用法是在 Pascal 语言中,它返回其参数的序号值。对于字符,这被定义为 ASCII 码。在 Modula-2(一种通用的结构化过程式编程语言)中也使用了相同的约定。
后来,Python(以及 PHP、SQL 的一些方言等)遵循了这个惯例,只是现在他们更可能使用 Unicode 而不是ASCII。这个术语(和函数名)的起源很可能比 Pascal 更久远。
它是“序数” ordinal 的缩写。序数是计数的数字,即 1、2、3,ord() 将字符转换为其在字符集中的(可计数)位置。
chr() 这是 “character” (字符)一词的缩写。
更新时间:Nov. 11, 2021, 5:39 p.m. 标签:python