Python 字符串前缀字母
字符串前缀是 Python 给字符串增加特殊功能的“小标记”放在字符串引号前即可生效。掌握这些前缀能大幅提升字符串处理效率尤其对新手而言分清不同前缀的用途能避免大量基础错误。一、核心前缀总览前缀全称/含义核心作用最常用场景fFormatted String格式化字符串直接嵌入变量/表达式动态生成字符串拼接变量、动态输出文本rRaw String原始字符串禁用反斜杠\的转义功能Windows 文件路径、正则表达式bBytes String字节串将字符串转为二进制字节类型网络通信、文件读写二进制模式、编码转换uUnicode StringUnicode 字符串明确声明 Unicode 编码字符串兼容 Python2、处理多语言字符Python3 极少用二、单个前缀详细解析1.f前缀格式化字符串Python3.6 核心特性核心作用无需拼接或调用format()直接在字符串中嵌入变量、表达式、函数调用是 Python 最推荐的字符串格式化方式。语法格式f字符串内容{变量/表达式} # 或 F字符串内容{变量/表达式} # 大小写均可推荐小写f基础示例逐行注释# 示例1嵌入变量 name 小红 age 18 # 直接写 {变量名} 即可嵌入 info f姓名{name}年龄{age} print(info) # 输出姓名小红年龄18 # 示例2嵌入表达式支持加减乘除、判断等 score 85 # 表达式score 60 会直接计算为布尔值 result f成绩{score}是否及格{score 60} print(result) # 输出成绩85是否及格True # 示例3嵌入函数调用 def double_num(x): return x * 2 # 直接调用函数参数也可以是变量/表达式 calc f10的2倍是{double_num(10)} print(calc) # 输出10的2倍是20进阶技巧新手实用# 技巧1格式化数字保留2位小数、千分位分隔 salary 12345.6789 # :.2f → 保留2位小数:, → 千分位分隔 salary_info f月薪{salary:.2f} 元千分位{salary:,} print(salary_info) # 输出月薪12345.68 元千分位12,345.6789 # 技巧2多行f-string用三引号 address 北京市朝阳区 phone 13800138000 # 三引号保留换行格式无需拼接\n user_info f 用户信息 姓名{name} 地址{address} 电话{phone} print(user_info) # 输出 # 用户信息 # 姓名小红 # 地址北京市朝阳区 # 电话13800138000使用场景日志输出如f用户{user_id}登录成功时间{time.now()}动态生成SQL语句简单场景拼接复杂文本替代拼接更易读注意事项花括号{}内必须是有效的Python表达式不能写赋值语句如{a1}报错花括号需要转义时写两个{{}}如f{{姓名{name}}}→ 输出{姓名小红}。2.r前缀原始字符串核心作用让反斜杠\失去“转义”功能仅作为普通字符处理解决新手最易踩的“路径/正则转义坑”。语法格式r字符串内容 # 或 R字符串内容 # 大小写均可推荐小写r基础示例对比普通字符串# 普通字符串\n 是换行\t 是制表符 normal_str C:\new_folder\temp.txt print(normal_str) # 输出 # C: # ew_folder emp.txt \n换行、\t制表符路径完全错乱 # 原始字符串\ 不转义路径正常 raw_str rC:\new_folder\temp.txt print(raw_str) # 输出C:\new_folder\temp.txt路径正确进阶示例正则表达式必用rimport re # 正则中 \d 表示数字若不用r需写 \\d转义 # 用r直接写 \d无需额外转义 pattern r\d{4}-\d{2}-\d{2} # 匹配日期格式如2026-03-18 result re.match(pattern, 2026-03-18) print(result.group()) # 输出2026-03-18 # 不用r的话需要写双反斜杠易出错 pattern_bad \\d{4}-\\d{2}-\\d{2}使用场景Windows 文件路径如open(rD:\data\test.txt)正则表达式避免反斜杠重复转义需保留反斜杠的文本如代码片段、配置内容。注意事项原始字符串不能以单个反斜杠结尾如rC:\data\报错解决方法# 正确写法1去掉末尾反斜杠 path1 rC:\data # 正确写法2用普通字符串双反斜杠 path2 C:\\data\\r仅影响反斜杠不影响其他字符如rhello world和普通字符串无区别。3.b前缀字节串核心作用将字符串转为bytes类型二进制数据区别于普通的str类型文本数据用于“字节级”操作。语法格式b字符串内容 # 或 B字符串内容 # 大小写均可推荐小写b基础示例区分str和bytes# str 类型文本 s hello print(type(s)) # 输出class str # bytes 类型二进制 b_s bhello print(type(b_s)) # 输出class bytes # str 和 bytes 可通过 encode/decode 转换 # str → bytes编码常用utf-8 s_to_b s.encode(utf-8) print(s_to_b) # 输出bhello # bytes → str解码 b_to_s b_s.decode(utf-8) print(b_to_s) # 输出hello进阶示例二进制文件读写# 写二进制文件如图片、视频 with open(rD:\test.jpg, wb) as f: # wb 写二进制模式 f.write(b二进制图片数据) # 必须传入bytes类型 # 读二进制文件 with open(rD:\test.jpg, rb) as f: # rb 读二进制模式 data f.read() print(type(data)) # 输出class bytes使用场景网络编程如 socket 通信传输的是字节数据二进制文件读写图片、视频、exe等编码转换str ↔ bytes底层数据处理如加密解密。注意事项b前缀后只能写ASCII 字符非ASCII字符如中文需先编码# 错误b中文 直接写会报错 # 正确先编码为bytes b_chinese 中文.encode(utf-8) print(b_chinese) # 输出b\xe4\xb8\xad\xe6\x96\x87bytes类型不能直接和str类型拼接需先统一类型。4.u前缀Unicode字符串核心作用明确声明字符串为 Unicode 编码Python3 中几乎无需使用因为 Python3 字符串默认就是 Unicode仅用于兼容 Python2。语法格式u字符串内容 # 或 U字符串内容 # 大小写均可推荐小写u基础示例# Python3 中u前缀和普通字符串无区别 s1 u中文 s2 中文 print(type(s1), type(s2)) # 输出class str class str print(s1 s2) # 输出True # Python2 中u前缀是必须的否则中文会乱码但Python3已淘汰该用法使用场景兼容 Python2 代码时添加极少数场景需明确声明 Unicode 编码如某些老旧库。注意事项Python3 完全可以省略u前缀写了也不会报错但无实际意义处理多语言字符中文、日文等时Python3 直接写普通字符串即可。三、组合前缀高频实用多个前缀可组合使用顺序不影响核心功能推荐按f/r/b顺序满足“多需求叠加”场景。1.fr/rf格式化 原始字符串最常用作用既支持嵌入变量又禁用反斜杠转义完美解决“动态路径”问题。folder data filename test.txt # fr变量{folder}/{filename} 生效同时 \ 不转义 path frC:\project\{folder}\{filename} print(path) # 输出C:\project\data\test.txt2.br/rb字节串 原始字符串作用二进制字节串 禁用反斜杠转义用于二进制路径/正则。# br二进制 原始字符串\ 不转义 b_path brC:\project\data print(type(b_path)) # 输出class bytes print(b_path) # 输出bC:\\project\\data3.fu/uf格式化 UnicodePython3 无意义name 小明 s fu姓名{name} print(s) # 输出姓名小明和普通f-string无区别四、避坑指南路径优先用r或frWindows 路径别忘加r动态路径用fr避免\n/\t转义坑格式化优先用f别再用拼接字符串如姓名name年龄str(age)f-string更简洁易读二进制操作必用b读写图片/视频、网络传输时记得用b前缀或encode/decode转换类型u前缀别多写Python3 中完全没必要写了反而显得不专业。五、总结与速记核心要点f格式化字符串嵌入变量/表达式日常开发最常用r原始字符串反斜杠不转义路径/正则必用b字节串处理二进制数据文件/网络操作uUnicode 字符串Python3 几乎不用仅兼容组合前缀fr动态路径、br二进制原始字符串是高频组合。速记口诀f算变量r不转义b是字节u不用记路径加r拼接用f二进制加b。