杰瑞科技汇

Python print如何输出特殊字符?

直接使用字符本身 (ASCII 和 Unicode)

对于大多数常见的特殊字符,你只需要直接在字符串里输入它们即可。

Python print如何输出特殊字符?-图1
(图片来源网络,侵删)
  1. ASCII 字符集:包含英文字母、数字、标点符号和一些控制字符。

    # 一些常见的 ASCII 特殊字符
    print("Hello, World!")      # 感叹号
    print("This is a test.")     # 句号
    print("What's your name?")   # 问号和单引号
    print("Path: C:\\Users")     # 反斜杠(需要转义)
    print("Tab\tSeparated")      # 制表符
  2. Unicode 字符集:Python 3 的字符串默认是 Unicode 编码,因此可以轻松显示世界上几乎所有的字符,包括表情符号、各种语言的字母、数学符号等。

    # Unicode 字符
    print("❤️")          # 爱心表情
    print("π ≈ 3.14159") # 希腊字母 π
    print("© 2025")      # 版权符号
    print("★")           # 星号
    print("你好,世界!") # 中文

注意:像反斜杠 \ 这样的字符在字符串中有特殊含义(\n 是换行,\t 是制表符),如果你想在字符串中打印一个字面上的反斜杠,你需要使用转义字符,即在它前面再加一个反斜杠:\\


使用转义字符 (Escape Sequences)

当你需要打印一些无法直接输入或具有特殊含义的字符时,可以使用转义字符,它由反斜杠 \ 后跟一个字符组成。

Python print如何输出特殊字符?-图2
(图片来源网络,侵删)
转义字符 含义 示例 输出结果
\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 方法的底层实现,可以让你更灵活地在代码中处理字符。

Python print如何输出特殊字符?-图3
(图片来源网络,侵删)
  • 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)。

  1. 从字符串编码为字节:使用字符串的 .encode() 方法。
  2. 从字节解码为字符串:使用字节的 .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() 查看它的码位,再决定如何处理。
分享:
扫描分享到社交APP
上一篇
下一篇