Python ord 函数
上次修改时间:2025 年 4 月 11 日
本综合指南探讨了 Python 的 ord 函数,该函数返回字符的 Unicode 码位。我们将介绍 ASCII 值、Unicode 处理以及字符编码的实际示例。
基本定义
ord 函数返回一个整数,表示字符的 Unicode 码位。 它是 chr 函数的反函数。
主要特点:接受单字符字符串(长度为 1),返回一个介于 0 和 1,114,111(十六进制的 0x10FFFF)之间的整数。 对无效输入引发 TypeError。
基本 ASCII 用法
这是一个使用 ASCII 字符的简单用法,展示了 ord 如何返回它们的数值。
# Uppercase letters
print(ord('A')) # 65
print(ord('B')) # 66
# Lowercase letters
print(ord('a')) # 97
print(ord('b')) # 98
# Digits
print(ord('0')) # 48
print(ord('9')) # 57
# Special characters
print(ord(' ')) # 32 (space)
print(ord('!')) # 33
此示例显示了 ord 与常用 ASCII 字符的用法。 这些值与标准 ASCII 编码匹配,其中“A”为 65,“a”为 97,“0”为 48。
请注意,大写和小写字母具有不同的码位,小写字母的值高于相应的大写字母。
Unicode 字符
ord 可以处理任何 Unicode 字符,而不仅仅是 ASCII。 此示例演示了各种 Unicode 符号。
# Common symbols
print(ord('€')) # 8364 (Euro sign)
print(ord('¥')) # 165 (Yen sign)
# Emoji
print(ord('😊')) # 128522 (Smiling face)
# Chinese character
print(ord('中')) # 20013
# Mathematical symbols
print(ord('∑')) # 8721
这些示例显示了 ord 与 ASCII 之外的 Unicode 字符的用法。 该函数返回它们在 Unicode 标准中的唯一码位。
这展示了 Python 对 Unicode 的完整支持,其中每个字符都具有唯一的数字标识符,而与语言或符号类型无关。
错误处理
当使用不正确时,ord 函数会引发 TypeError。 此示例显示了常见的错误情况。
try:
print(ord('')) # Empty string
except TypeError as e:
print(f"Error: {e}") # ord() expected a character, but string of length 0 found
try:
print(ord('ab')) # String longer than 1 character
except TypeError as e:
print(f"Error: {e}") # ord() expected a character, but string of length 2 found
try:
print(ord(65)) # Not a string
except TypeError as e:
print(f"Error: {e}") # ord() expected string of length 1, but int found
这些示例演示了 ord 的严格输入要求。 它只接受单字符字符串,并拒绝所有其他输入类型。
在处理将传递给 ord 的用户输入时,正确的错误处理非常重要,以避免程序崩溃。
字符分析
此示例演示了如何使用 ord 分析字符属性,例如大小写、数字状态或特殊字符。
def char_info(c):
code = ord(c)
print(f"Character: {c}")
print(f"Code point: {code}")
print(f"Uppercase: {65 <= code <= 90}")
print(f"Lowercase: {97 <= code <= 122}")
print(f"Digit: {48 <= code <= 57}")
print(f"Control char: {code < 32 or code == 127}")
char_info('A')
char_info('z')
char_info('5')
char_info('\n')
此函数使用 ord 获取字符的码位,然后检查各种范围以确定其属性。
这种分析对于文本处理、验证或实现超出 Python 内置方法的自定义字符分类逻辑非常有用。
自定义编码转换
此示例演示了如何使用 ord 将文本转换为自定义数字表示形式。
def text_to_codes(text, base=16):
return [hex(ord(c)) if base == 16 else str(ord(c)) for c in text]
print(text_to_codes("Hello")) # ['0x48', '0x65', '0x6c', '0x6c', '0x6f']
print(text_to_codes("Python", 10)) # ['80', '121', '116', '104', '111', '110']
def create_cipher_key(text):
return {c: ord(c) * 2 for c in text}
print(create_cipher_key("secret")) # {'s': 230, 'e': 202, 'c': 198, 'r': 216, 't': 232}
第一个函数将文本转换为十六进制或十进制码位。 第二个函数通过将每个字符的值加倍来创建一个简单的密码密钥。
这些示例显示了 ord 在文本处理、编码和简单密码操作中的实际应用。
最佳实践
- 验证输入长度: 在传递给 ord 之前,确保字符串长度为 1
- 与 chr 结合使用: 使用 ord/chr 对进行字符转换
- 处理 Unicode: 记住 ord 适用于所有 Unicode 字符
- 文档编码: 阐明是使用 ASCII 值还是 Unicode 值
- 错误处理: 在处理未知输入时捕获 TypeError
资料来源
作者
列出所有 Python 教程。