Python3f-string:如何避免必须转义文本大括号



有没有办法避免在python3f-string中转义文本大括号字符?

例如,如果你想输出一个json字符串或一组CSS规则,那么如果你想使用f-string语法,就必须将所有{}字符转换为{{}},这真的很不方便。

我知道可以使用较旧的语法,例如div {color: %s} % color'text {}'.format(abc)或字符串模板,但我想知道是否有一种方法可以在原始文本上使用f字符串,最好是用某种分隔符标记"原始"块的开头和结尾,例如,类似于如何在java正则表达式中使用QE,以便在正则表达式中包含未加转义的原始字符。

作为替代方案,标准库中是否有允许获取一块原始文本并将其转换为f-string-safe格式的内容?(同样,类似于如何使用Pattern.requote来表示java正则表达式(

可以使用隐式字符串串联将f-string格式仅应用于字符串的部分。

[…]还请注意,文字连接可以为每个组件使用不同的引用样式(甚至混合原始字符串和三重引用字符串(,并且格式化的字符串文字可以与纯字符串文字连接

>>> hello = "world"
>>> "{hello}" f"{hello}" "!"
'{hello}world!'

这使用与相应的带转义符的f字符串完全相同的字节码。请注意,空白是可选的,但有助于提高可读性。

python中有三种方法可以手动操作字符串。

  1. 使用f字符串
  2. 使用str.format表达式
  3. %-格式化表达式

请参阅此链接

如果你愿意,你可以制作自己的自定义函数并调用它。

def format_string(data,template):
for key, value in data.items():
return template.replace("#%s#" % key, str(value))


template ="<html><body>name is :#name# , profession is :#profession#<body></html>"
data ={"name":"Jack","profession":"student"}    
format_string(data,template)

最新更新