You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何创建包含引号的原始字符串字面量?

没问题,要输出 ${foo"bar"} 这种包含双引号的原始字符串,其实有几种直观的解决办法,根据你的使用场景选就行:

方法一:用单引号包裹原始字符串

Python的原始字符串(r"" 语法)支持单引号和双引号互相嵌套,所以用单引号包裹的原始字符串里可以直接写双引号,完全不需要转义:

target_str = r'${foo"bar"}'
print(target_str)  # 输出:${foo"bar"}

这种方式最简洁,也是最推荐的写法,原始字符串会原样保留所有字符,包括双引号。

方法二:结合f-string保留格式(不解析变量)

如果你是想在f-string里保留 ${} 的格式(就像你提到的 ${r"${foo}"} 输出 ${foo}),同时包含双引号,可以用原始f-stringrf"")配合大括号转义(f-string里用两个 {{}} 输出单个 {}):

# 单引号版本
target_str = rf'${{foo"bar"}}'
print(target_str)  # 输出:${foo"bar"}

# 三重双引号版本(适合同时包含单双引号的复杂场景)
target_str = rf"""${{foo"bar"}}"""
print(target_str)  # 输出:${foo"bar"}

这里的 rf 标记让字符串既是原始字符串(不处理转义)又是f-string,{{}} 用来避免f-string解析里面的变量,双引号则因为在单引号/三重双引号的包裹下直接被保留。

方法三:转义引号(不推荐)

如果一定要用双引号包裹原始字符串,也可以用反斜杠转义双引号——虽然原始字符串通常不需要转义,但这个场景下是可行的:

target_str = r"${foo\"bar"}"
print(target_str)  # 输出:${foo"bar"}

不过这种写法可读性较差,除非必要,否则优先选前两种方法。

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

火山引擎 最新活动