You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中运行SQL代码时f'''与r'''的差异及适用场景

Python中f-string与原始字符串的区别及适用场景

核心区别

  • f-string(f'''/f"""):属于格式化字符串,会主动解析字符串内的{变量/表达式},将其替换为对应的值;同时会处理标准转义字符(比如\n解析为换行、\t解析为制表符)。
  • 原始字符串(r'''/r"""):完全保留字符串的原始内容,不会解析任何转义字符(\n就是字面的\和n),也不会处理{...}格式的变量替换,所有字符原封不动输出。

各自适用场景

f-string适合的场景

当你需要把Python变量、计算结果动态嵌入字符串时,用f-string最简洁直观:

table_name = "user_info"
date = "2024-05-20"
query = f'''
with a as (
    select * from {table_name}
    where create_date = '{date}'
)
'''

这种场景下,{table_name}和{date}会被替换成变量的实际值,实现动态SQL生成。

原始字符串适合的场景

  1. 无需嵌入变量的静态文本:比如固定SQL语句,用原始字符串可以避免f-string误解析SQL中可能存在的{}(比如某些SQL函数或语法里的大括号),防止出现变量未定义的错误。
  2. 含大量转义字符的文本:比如正则表达式、Windows文件路径:
    • 正则示例:用原始字符串无需把\d写成\\d,直接写r"\d+"就能匹配数字,避免转义混乱。
    • 文件路径示例:r"C:\Users\name\file.txt",不用把\写成\\。

关于原始字符串与正则表达式

完全适用,而且强烈推荐用原始字符串编写正则表达式。

正则语法里大量用到\做转义(比如\s匹配空白、\w匹配单词字符),如果不用原始字符串,Python会先把\当作自身的转义字符处理,导致正则表达式失效。比如"\d+"会被Python解析为d+(因为\d不是Python的有效转义,会被忽略),而r"\d+"则会被正则引擎正确识别为匹配一个或多个数字。

内容的提问来源于stack exchange,提问作者user2543622

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:35:34