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 中和 "你好" 没区别

🧩 组合规则

组合 是否合法 说明
fr 或 rf ✅ 合法 原始格式化字符串(如 rf'\n{var}')
rb 或 br ❌ 非法 语法错误(不能同时是 str 和 bytes)
fb、uf 等 ❌ 非法 不支持

📌 总结表

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

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

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

相关推荐
代码山河7 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行7 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
C^h7 小时前
c++ string
开发语言·c++
raindayinrain7 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
梯度下降者7 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
学逆向的7 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao7 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
学逆向的8 小时前
C 局部静态变量
c语言·开发语言·网络安全
大都督会赢的9 小时前
C++第一节课
开发语言·c++
“AI国潮设计-小江”9 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc