ZetCode

Python chr 函数

上次修改时间:2025 年 4 月 11 日

这份全面的指南探讨了 Python 的 chr 函数,它返回一个字符串,表示来自整数 Unicode 代码点的字符。我们将涵盖 ASCII 转换、Unicode 处理和实际示例。

基本定义

chr 函数返回一个字符串,该字符串表示 Unicode 代码点是传递给它的整数的字符。它是 ord 的逆函数。

主要特点:接受 0 到 1,114,111(十六进制为 0x10FFFF)之间的整数。对于超出范围的值,引发 ValueError。返回一个单字符字符串。

基本 ASCII 转换

这是使用 ASCII 值的简单用法,展示了 chr 如何将整数代码点转换为其对应的字符。

basic_chr.py
# 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 字符。

unicode_chr.py
# 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。此示例显示了正确的错误处理。

errors.py
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 通常用于从其代码点生成字符序列。此示例创建字母序列。

sequences.py
# 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 可用于将字节值转换为其对应的字符。

binary.py
# 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 将数字字节值转换为其字符表示形式。这在处理原始字节数据时非常有用。

请注意,某些字符(如控制字符)可能不可打印,但仍具有有效的表示形式。

最佳实践

资料来源

作者

我叫 Jan Bodnar,是一位充满热情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我已经撰写了 1,400 多篇文章和 8 本电子书。 我在编程教学方面拥有超过十年的经验。

列出所有 Python 教程