使用 ord() 和 chr() 转换字符和整数
在本步骤中,我们将学习如何使用 Python 内置函数 ord() 和 chr() 在字符及其对应的 Unicode 整数表示之间进行转换。
在 Python 3 中,字符串使用 Unicode 表示。ord() 函数接收一个单独的字符作为输入,并返回其对应的 Unicode 十进制整数值。
让我们创建一个新的 Python 文件来试验这些函数。在 WebIDE 中,右键单击文件浏览器中的 project 目录,然后选择 New File。将文件命名为 char_conversion.py。
在编辑器中打开 char_conversion.py 并添加以下代码:
## 使用 ord() 获取字符的 Unicode 十进制值
char1 = 'a'
char2 = 'é'
char3 = ';'
print(f"'{char1}' 的 Unicode 十进制值是:{ord(char1)}")
print(f"'{char2}' 的 Unicode 十进制值是:{ord(char2)}")
print(f"'{char3}' 的 Unicode 十进制值是:{ord(char3)}")
通过按 Ctrl + S(macOS 上为 Cmd + S)保存文件。
现在,再次打开集成终端(如果尚未打开),然后使用 python 命令运行脚本:
python char_conversion.py
你应该会看到类似以下的输出:
'a' 的 Unicode 十进制值是: 97
'é' 的 Unicode 十进制值是: 233
';' 的 Unicode 十进制值是: 59
chr() 函数执行相反的操作。它接收一个表示 Unicode 代码点的十进制整数(或十六进制整数),并返回相应的字符。
让我们向 char_conversion.py 添加更多代码来使用 chr() 函数。将以下行追加到现有代码中:
## 使用 chr() 从 Unicode 十进制值获取字符
int1 = 8364
int2 = 8482
print(f"Unicode 十进制值 {int1} 的字符是:{chr(int1)}")
print(f"Unicode 十进制值 {int2} 的字符是:{chr(int2)}")
## 你也可以将十六进制值与 chr() 一起使用
hex_int = 0x00A9 ## 字符 '©' 的十六进制表示
print(f"Unicode 十六进制值 {hex(hex_int)} 的字符是:{chr(hex_int)}")
再次保存文件。
从终端运行脚本:
python char_conversion.py
输出现在应该包含来自 chr() 函数的结果:
'a' 的 Unicode 十进制值是: 97
'é' 的 Unicode 十进制值是: 233
';' 的 Unicode 十进制值是: 59
Unicode 十进制值 8364 的字符是: €
Unicode 十进制值 8482 的字符是: ™
Unicode 十六进制值 0xa9 的字符是: ©
你可能想知道如何找到字符的十六进制 Unicode 表示。你可以使用 ord() 函数获取十进制值,然后使用内置的 hex() 函数将十进制值转换为其十六进制字符串表示。
将以下代码添加到 char_conversion.py:
## 将字符转换为其十六进制 Unicode 表示
char_copyright = '©'
decimal_copyright = ord(char_copyright)
hexadecimal_copyright = hex(decimal_copyright)
print(f"'{char_copyright}' 的十六进制 Unicode 值是:{hexadecimal_copyright}")
保存文件并最后运行一次:
python char_conversion.py
最终输出将包括字符 '©' 的十六进制值:
'a' 的 Unicode 十进制值是: 97
'é' 的 Unicode 十进制值是: 233
';' 的 Unicode 十进制值是: 59
Unicode 十进制值 8364 的字符是: €
Unicode 十进制值 8482 的字符是: ™
Unicode 十六进制值 0xa9 的字符是: ©
'©' 的十六进制 Unicode 值是: 0xa9
这演示了如何将 ord()、chr() 和 hex() 一起用于在 Python 中处理字符编码。