python 的字符串前缀

在 Python 中,字符串字面量(string literals)可以使用**前缀(prefixes)**来指定其类型或行为。目前官方支持的字符串前缀主要有以下 4 种


✅ 1. r ------ 原始字符串(Raw String)

  • 作用 :禁用反斜杠 \ 的转义功能,所有字符按字面意思处理。

  • 返回类型str

  • 典型用途:正则表达式、Windows 文件路径

  • 示例

    复制代码
    r'\n\t'      # 字符串内容是:\n\t(4个字符)
    r'C:\Users'  # 不会因 \U 被误解析为 Unicode 转义

✅ 2. f ------ 格式化字符串(Formatted String Literal,f-string)

  • 作用 :在字符串中嵌入表达式(用 {} 包裹),Python 3.6+ 引入

  • 返回类型str

  • 典型用途:动态拼接变量、调用函数等

  • 示例

    复制代码
    name = "Alice"
    f"Hello, {name.upper()}!"  # → 'Hello, ALICE!'

💡 可与 r 组合:rf'C:\Users\{name}'


✅ 3. b ------ 字节字符串(Bytes Literal)

  • 作用 :创建 bytes 对象(不是字符串!)

  • 返回类型bytes

  • 典型用途:网络协议、文件二进制读写、加密、哈希等

  • 注意:只能包含 ASCII 字符(非 ASCII 需显式编码)

  • 示例

    复制代码
    b'hello'     # → b'hello' (类型是 bytes)
    type(b'abc') # → <class 'bytes'>

✅ 4. u ------ Unicode 字符串(Unicode Literal)

  • 作用 :显式声明字符串为 Unicode(仅在 Python 2 中有意义

  • 返回类型str(Python 3 中所有字符串默认就是 Unicode)

  • 现状 :Python 3 中 u'...''...' 完全等价,主要用于兼容旧代码或强调语义

  • 示例

    复制代码
    u"你好"  # Python 3 中和 "你好" 没区别

🧩 组合规则

组合 是否合法 说明
frrf ✅ 合法 原始格式化字符串(如 rf'\n{var}'
rbbr ❌ 非法 语法错误(不能同时是 str 和 bytes)
fbuf ❌ 非法 不支持

📌 总结表

前缀 全称 类型 主要用途
r raw string str 避免 \ 转义(正则、路径)
f formatted string str 插入变量/表达式(推荐格式化方式)
b bytes literal bytes 处理二进制数据
u unicode literal str Python 2 兼容(Python 3 可省略)

⚠️ 注意:前缀不区分大小写 (如 R"..."F"..." 也合法),但惯例使用小写

这些前缀让 Python 能灵活处理文本、二进制、动态内容和特殊格式,是日常开发中的重要工具!

相关推荐
YsyaaabB19 小时前
LangChain作业二---多语言翻译Prompt
开发语言·python·langchain
SunnyDays101119 小时前
如何在 Java 中实现 OFD 与 PDF 格式互转
java·开发语言
HappyAcmen19 小时前
2.PDF长文档完整读取
python·pdf·rag
装不满的克莱因瓶19 小时前
掌握感知器的学习原理
人工智能·python·神经网络·算法·ai·卷积神经网络
py小王子19 小时前
Nature 期刊图复现|Python 实现双轴高维直方图与重叠分布图
python·nature·期刊图复现
小熊Coding19 小时前
从零打造一款回合制 RPG 游戏:基于 Pygame 的《塔影守卫》全解析
python·游戏·计算机专业·pygame·rpg·2d游戏
keykey6.19 小时前
用 PyTorch 训练图像分类器:完整实战
开发语言·人工智能·深度学习·机器学习
雪度娃娃19 小时前
转向现代C++——保证const成员函数的线程安全性
开发语言·c++
原来是猿19 小时前
深入理解 C++ unordered_map 与 unordered_set
开发语言·c++
满天星830357719 小时前
【Qt】信号和槽 (一)(概述和基本使用)
开发语言·c++·qt