直接使用字符本身 (ASCII 和 Unicode)
对于大多数常见的特殊字符,你只需要直接在字符串里输入它们即可。

-
ASCII 字符集:包含英文字母、数字、标点符号和一些控制字符。
# 一些常见的 ASCII 特殊字符 print("Hello, World!") # 感叹号 print("This is a test.") # 句号 print("What's your name?") # 问号和单引号 print("Path: C:\\Users") # 反斜杠(需要转义) print("Tab\tSeparated") # 制表符 -
Unicode 字符集:Python 3 的字符串默认是 Unicode 编码,因此可以轻松显示世界上几乎所有的字符,包括表情符号、各种语言的字母、数学符号等。
# Unicode 字符 print("❤️") # 爱心表情 print("π ≈ 3.14159") # 希腊字母 π print("© 2025") # 版权符号 print("★") # 星号 print("你好,世界!") # 中文
注意:像反斜杠 \ 这样的字符在字符串中有特殊含义(\n 是换行,\t 是制表符),如果你想在字符串中打印一个字面上的反斜杠,你需要使用转义字符,即在它前面再加一个反斜杠:\\。
使用转义字符 (Escape Sequences)
当你需要打印一些无法直接输入或具有特殊含义的字符时,可以使用转义字符,它由反斜杠 \ 后跟一个字符组成。

| 转义字符 | 含义 | 示例 | 输出结果 |
|---|---|---|---|
\n |
换行 (Line Feed) | print("Line1\nLine2") |
Line1 Line2 |
\t |
水平制表符 (Tab) | print("Col1\tCol2") |
Col1 Col2 |
\\ |
反斜杠本身 | print("C:\\Program Files") |
C:\Program Files |
\' |
单引号 | print('It\'s a nice day.') |
It's a nice day. |
\" |
双引号 | print("He said, \"Hello\"") |
He said, "Hello" |
\r |
回车 (Carriage Return) | print("Hello\rWorld") |
World (光标回到行首,覆盖了 "Hello") |
\b |
退格 (Backspace) | print("Hello\bWorld") |
HellWorld (删除了 'o') |
示例代码:
# 使用转义字符
print("第一行\n第二行")
print("列1\t列2\t列3")
print("文件路径是 C:\\temp\\file.txt")
print('Don\'t forget to escape the single quote.')
使用 Unicode 码位 (Unicode Code Points)
对于一些不常见或无法直接从键盘输入的 Unicode 字符,你可以知道它的码位(通常是十六进制),然后使用 \u 或 \U 转义序列来表示。
\u后跟 4 位十六进制数,用于表示基本多文种平面 (BMP) 中的字符。\U后跟 8 位十六进制数,用于表示更广范围的 Unicode 字符。
示例代码:
# 使用 \u (4位十六进制) # 爱心符号 ❤️ 的码位是 U+2764 print(f"Unicode 爱心: \u2764") # 欧元符号 € 的码位是 U+20AC print(f"欧元符号: \u20AC") # 使用 \U (8位十六进制) # 某些特殊符号可能需要8位 print(f"另一个符号: \U0001F600") # 😀 的码位是 U+1F600
使用 ord() 和 chr() 函数
这两个函数是 \u 和 \U 方法的底层实现,可以让你更灵活地在代码中处理字符。

ord(char): 返回一个字符的 Unicode 码位(整数)。chr(integer): 返回一个整数(Unicode 码位)对应的字符。
示例代码:
# 获取字符的码位
heart_code = ord("❤")
print(f"爱心符号的码位是: {heart_code}") # 输出: 10084
# 使用码位生成字符
heart_symbol = chr(10084)
print(f"使用码位生成的符号: {heart_symbol}") # 输出: ❤
# 也可以直接使用十六进制码位
heart_symbol_hex = chr(0x2764)
print(f"使用十六进制码位生成的符号: {heart_symbol_hex}") # 输出: ❤
处理编码问题 (特别是 bytes 类型)
在某些情况下,你可能需要处理字节流(例如读写文件、网络通信),这时就需要处理不同的字符编码(如 UTF-8, GBK)。
- 从字符串编码为字节:使用字符串的
.encode()方法。 - 从字节解码为字符串:使用字节的
.decode()方法。
示例代码:
my_string = "你好,世界!"
# 1. 将字符串编码为 UTF-8 字节
utf8_bytes = my_string.encode('utf-8')
print(f"UTF-8 字节表示: {utf8_bytes}")
# 输出: b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81'
# 2. 将字节解码回字符串
decoded_string = utf8_bytes.decode('utf-8')
print(f"解码后的字符串: {decoded_string}")
# 输出: 你好,世界!
# --- 编码不匹配的例子 ---
# 假设文件是用 GBK 编码保存的,但你用 UTF-8 去读
try:
# 这是一个模拟的 GBK 编码的字节
gbk_bytes = b'\xc4\xe3\xba\xc3\xa3\xba\xa1\xa3\xa1'
# 错误的方式:用 UTF-8 解码 GBK 字节
gbk_bytes.decode('utf-8')
except UnicodeDecodeError as e:
print(f"解码失败: {e}")
print("原因:编码和解码使用的格式不匹配。")
# 正确的方式:使用 GBK 解码
correct_string = gbk_bytes.decode('gbk')
print(f"用 GBK 正确解码后: {correct_string}")
# 输出: 你好,世界!
总结与最佳实践
| 场景 | 推荐方法 | 示例 |
|---|---|---|
| 打印常见字符 (ASCII, Emoji, 常用符号) | 直接输入 | print("Hello ❤️") |
| 打印特殊控制字符 (换行, 制表符, 反斜杠) | 转义字符 | print("Line1\nLine2") |
| 打印键盘上没有的字符 | Unicode 码位 (\u, \U) |
print(f"符号: \u2764") |
| 在程序中动态转换字符和码位 | ord() 和 chr() |
print(chr(ord("A") + 1)) (输出 B) |
| 处理文件或网络数据 | encode() 和 decode() |
data = my_str.encode('utf-8') |
核心要点:
- Python 3 默认就是 Unicode 的,所以你几乎不需要担心编码问题,除非你在处理外部的字节流。
- 记住反斜杠
\的转义规则,这是最常见的坑。 - 遇到无法打印的字符时,先用
ord()查看它的码位,再决定如何处理。
