r 是原始字符串前缀,使反斜杠不作转义处理,避免路径如”C:newtest.txt”被误解析;常用于正则表达式和文件路径;但结尾不能为单个反斜杠,且r”r”表示两个字符而非回车符。

python 中的 r 是字符串字面量前缀,表示“原始字符串”(raw String),它的作用是让字符串里的反斜杠 不再被当作转义字符处理。
为什么需要 r 前缀?
普通字符串中,n 表示换行,t 表示制表符,\ 才表示一个真正的反斜杠。但像 windows 路径 "C:newtest.txt" 会出问题——n 和 t 被解释为换行和制表,导致路径错误或报错。
加 r 就能避免这种误解:
-
r"C:newtest.txt"→ 完全按字面意思理解:C 盘下有个 new 文件夹,里面是 test.txt -
r"nt\\"→ 就是四个字符:、n、、t、、、、
r 常见使用场景
最典型的是正则表达式和文件路径:
立即学习“Python免费学习笔记(深入)”;
- 写正则时,模式里常含大量
d、w、\,用r"d+.d+"比"\d+\.\d+"清晰得多 - 读写本地文件时,
open(r"C:datalog.txt")更安全,不用反复写双反斜杠 - 匹配字符串中的反斜杠本身,比如找
C:path,用r"C:\path"或更简洁的r"C:path"(注意结尾不能是单个)
注意事项
原始字符串不是万能的,有两个关键限制:
- 结尾不能是单个反斜杠,
r"abc"是语法错误(因为引号前的仍试图转义引号) - 它只影响字符串字面量的解析,不影响运行时行为;
r"r"是两个字符和r,不是回车符;而"r"才是真正的回车控制字符
r 和 r 是两回事
别把字符串前缀 r 和转义序列 r 混了:
- r 是写在引号前面的修饰符,只对字符串定义方式起作用
-
r是字符串内部的一个转义序列,代表“回车”控制符(光标回到行首) -
r"r"→ 字符串内容是反斜杠 + r;"r"→ 字符串内容是一个回车符