Python chr 函数
上次修改时间:2025 年 4 月 11 日
这份全面的指南探讨了 Python 的 chr 函数,它返回一个字符串,表示来自整数 Unicode 代码点的字符。我们将涵盖 ASCII 转换、Unicode 处理和实际示例。
基本定义
chr 函数返回一个字符串,该字符串表示 Unicode 代码点是传递给它的整数的字符。它是 ord 的逆函数。
主要特点:接受 0 到 1,114,111(十六进制为 0x10FFFF)之间的整数。对于超出范围的值,引发 ValueError。返回一个单字符字符串。
基本 ASCII 转换
这是使用 ASCII 值的简单用法,展示了 chr 如何将整数代码点转换为其对应的字符。
# Convert ASCII values to characters print(chr(65)) # 'A' print(chr(97)) # 'a' print(chr(48)) # '0' # Special characters print(chr(36)) # '$' print(chr(10)) # '\n' (newline)
此示例显示了带有常见 ASCII 值的 chr。每个整数对应于 ASCII 表中的特定字符。
请注意,ASCII 值的范围为 0 到 127。chr 适用于所有有效的 Unicode 代码点,而不仅仅是 ASCII。
Unicode 字符
chr 可以处理任何有效的 Unicode 代码点,而不仅仅是 ASCII。此示例演示了各种 Unicode 字符。
# Common symbols print(chr(8364)) # '€' (Euro sign) print(chr(9829)) # '♥' (Heart symbol) # Non-Latin scripts print(chr(20013)) # '中' (Chinese character) print(chr(1488)) # 'א' (Hebrew aleph) # Emoji print(chr(128512)) # '😀' (Grinning face)
这些示例显示了带有各种 Unicode 代码点的 chr。该函数可以表示 Unicode 支持的任何书写系统的字符。
最后一个例子表明 chr 也适用于表情符号,表情符号具有更高的代码点值。
错误处理
当 chr 函数与无效代码点一起使用时,会引发 ValueError。此示例显示了正确的错误处理。
try:
print(chr(-1))
except ValueError as e:
print(f"Error: {e}") # chr() arg not in range(0x110000)
try:
print(chr(1114112)) # 0x10FFFF + 1
except ValueError as e:
print(f"Error: {e}") # chr() arg not in range(0x110000)
try:
print(chr("A"))
except TypeError as e:
print(f"Error: {e}") # an integer is required
这些示例演示了 chr 在使用无效输入时的行为。负数、高于 1,114,111 的值和非整数都会引发错误。
chr 的有效范围为 0 到 1,114,111(十六进制为 0x10FFFF)。
生成字符序列
chr 通常用于从其代码点生成字符序列。此示例创建字母序列。
# Generate uppercase alphabet
uppercase = [chr(i) for i in range(65, 91)]
print(''.join(uppercase)) # ABCDEFGHIJKLMNOPQRSTUVWXYZ
# Generate lowercase alphabet
lowercase = [chr(i) for i in range(97, 123)]
print(''.join(lowercase)) # abcdefghijklmnopqrstuvwxyz
# Generate digits
digits = [chr(i) for i in range(48, 58)]
print(''.join(digits)) # 0123456789
此示例使用带有 chr 的列表推导式来生成字符序列。这些范围对应于字母和数字的 ASCII 值。
此技术对于生成测试数据或创建用于验证目的的字符集非常有用。
处理二进制数据
在使用二进制数据时,chr 可用于将字节值转换为其对应的字符。
# Convert bytes to characters data = [72, 101, 108, 108, 111] # ASCII codes for "Hello" message = ''.join(chr(byte) for byte in data) print(message) # "Hello" # Handle non-printable characters control_chars = [chr(i) for i in range(0, 32)] print(control_chars) # Contains '\t', '\n', etc.
此示例演示了如何使用 chr 将数字字节值转换为其字符表示形式。这在处理原始字节数据时非常有用。
请注意,某些字符(如控制字符)可能不可打印,但仍具有有效的表示形式。
最佳实践
- 验证输入: 检查值是否在 0-1,114,111 范围内
- 与 ord 一起使用: 记住
chr和ord是互逆的 - 处理错误: 当输入范围不确定时捕获 ValueError
- 文档编码: 明确字符编码的预期
- 考虑可读性: 对于 ASCII,有时文字比
chr更清晰
资料来源
作者
列出所有 Python 教程。