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