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 教程。