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

Python 中的 r 是字符串字面量前缀,表示“原始字符串”(raw string),它的作用是让字符串里的反斜杠 \ 不再被当作转义字符处理。
为什么需要 r 前缀?
普通字符串中,\n 表示换行,\t 表示制表符,\\ 才表示一个真正的反斜杠。但像 Windows 路径 "C:\new\test.txt" 会出问题——\n 和 \t 被解释为换行和制表,导致路径错误或报错。
加 r 就能避免这种误解:
-
r"C:\new\test.txt"→ 完全按字面意思理解:C 盘下有个 new 文件夹,里面是 test.txt -
r"\n\t\\\\"→ 就是四个字符:\、n、\、t、\、\、\、\
r 常见使用场景
最典型的是正则表达式和文件路径:
立即学习“Python免费学习笔记(深入)”;
- 写正则时,模式里常含大量
\d、\w、\\,用r"\d+\.\d+"比"\\d+\\.\\d+"清晰得多 - 读写本地文件时,
open(r"C:\data\log.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"→ 字符串内容是一个回车符











