有没有办法避免在python3f-string
中转义文本大括号字符?
例如,如果你想输出一个json字符串或一组CSS规则,那么如果你想使用f-string语法,就必须将所有{
和}
字符转换为{{
和}}
,这真的很不方便。
我知道可以使用较旧的语法,例如div {color: %s} % color
、'text {}'.format(abc)
或字符串模板,但我想知道是否有一种方法可以在原始文本上使用f字符串,最好是用某种分隔符标记"原始"块的开头和结尾,例如,类似于如何在java正则表达式中使用Q
和E
,以便在正则表达式中包含未加转义的原始字符。
作为替代方案,标准库中是否有允许获取一块原始文本并将其转换为f-string-safe格式的内容?(同样,类似于如何使用Pattern.requote来表示java正则表达式(
可以使用隐式字符串串联将f-string格式仅应用于字符串的部分。
[…]还请注意,文字连接可以为每个组件使用不同的引用样式(甚至混合原始字符串和三重引用字符串(,并且格式化的字符串文字可以与纯字符串文字连接。
>>> hello = "world"
>>> "{hello}" f"{hello}" "!"
'{hello}world!'
这使用与相应的带转义符的f字符串完全相同的字节码。请注意,空白是可选的,但有助于提高可读性。
python中有三种方法可以手动操作字符串。
- 使用f字符串
- 使用str.format表达式
- %-格式化表达式
请参阅此链接
如果你愿意,你可以制作自己的自定义函数并调用它。
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)