chr() 函数
这是最直接、最常用的方法,Python 内置的 chr() 函数接收一个整数(即 Unicode 码点),并返回其对应的字符。
语法
chr(i)
i: 一个表示 Unicode 码点的整数(范围在0到0x10FFFF之间)。
示例
常见 ASCII 字符
ASCII 字符的码点范围是 0-127。
# 码点 65 对应大写字母 'A'
char_a = chr(65)
print(f"码点 65 对应的字符是: {char_a}")
# 码点 97 对应小写字母 'a'
char_b = chr(97)
print(f"码点 97 对应的字符是: {char_b}")
# 码点 48 对应数字 '0'
char_c = chr(48)
print(f"码点 48 对应的字符是: {char_c}")
中文汉字
中文汉字在 Unicode 中通常位于基本多文种平面(BMP)。
# '中' 的 Unicode 码点是 20013
char_chinese = chr(20013)
print(f"码点 20013 对应的字符是: {char_chinese}")
# '国' 的 Unicode 码点是 22269
char_chinese_2 = chr(22269)
print(f"码点 22269 对应的字符是: {char_chinese_2}")
表情符号
表情符号通常需要两个 chr() 返回的字符来组合(称为代理对,Surrogate Pair)。
# '😊' 的 Unicode 码点是 U+1F60A
# 在 Python 中,这表示为整数 0x1F60A
char_emoji = chr(0x1F60A)
print(f"码点 0x1F60A 对应的字符是: {char_emoji}")
# '🚀' 的 Unicode 码点是 U+1F680
char_rocket = chr(0x1F680)
print(f"码点 0x1F680 对应的字符是: {char_rocket}")
其他方法:使用格式化字符串
你也可以使用 Python 的字符串格式化功能来实现同样的效果,这在需要动态构建字符串时非常有用。
示例
# 使用 f-string (Python 3.6+)
code_point = 65
char_from_fstring = f"{code_point:c}" # :c 是将整数作为字符转换的格式说明符
print(f"f-string 转换结果: {char_from_fstring}")
# 使用 format() 方法
code_point = 97
char_from_format = "{:c}".format(code_point)
print(f"format() 转换结果: {char_from_format}")
# 使用旧式 % 格式化
code_point = 48
char_from_percent = "%c" % code_point
print(f"百分号格式化转换结果: {char_from_percent}")
反向操作:字符转 Unicode 码点
如果你需要执行相反的操作,即从一个字符获取其 Unicode 码点,可以使用内置的 ord() 函数。
语法
ord(c)
c: 一个长度为 1 的字符串。
示例
char_a = 'A'
code_point_a = ord(char_a)
print(f"字符 '{char_a}' 的码点是: {code_point_a}") # 输出 65
char_emoji = '😊'
code_point_emoji = ord(char_emoji)
print(f"字符 '😊' 的码点是: {code_point_emoji}") # 输出 128522 (即 0x1F60A)
| 操作 | 函数/方法 | 描述 | 示例 |
|---|---|---|---|
| Unicode 码点 → 字符 | chr(i) |
最常用,将整数码点 i 转换为字符。 |
chr(65) → 'A' |
f"{i:c}" |
使用 f-string 格式化。 | f"{97:c}" → 'a' |
|
| 字符 → Unicode 码点 | ord(c) |
将字符 c 转换为其整数码点。 |
ord('A') → 65 |
在绝大多数情况下,你只需要记住 chr() 和 ord() 这两个核心函数就足够了。
