我必须使用字典中的值格式化字符串,但该字符串已经包含大括号。例如:
raw_string = """
DATABASE = {
'name': '{DB_NAME}'
}
"""
但是,当然,
raw_string.format(my_dictionary)
会导致KeyError。
有没有办法使用不同的符号与
.format()
一起使用?
这不是如何在使用 .format 时转义字符串中的大括号 ({}) 字符? 的重复,因为我需要保持大括号原样并为
.format
使用不同的分隔符.
我认为不可能使用替代分隔符。您需要使用双大括号
{{
}}
来表示您不想用 format()
替换的大括号:
inp = """
DATABASE = {{
'name': '{DB_NAME}'
}}"""
dictionary = {'DB_NAME': 'abc'}
output = inp.format(**dictionary)
print(output)
输出
DATABASE = {
'name': 'abc'
}
string.format()
string.format()
我们想在 python str.format() 中使用自定义占位符分隔符
string.format()
功能强大,但不原生支持占位符分隔符修改。string.format()
使用大括号,这很常见,并且会导致 分隔符冲突string.format()
默认解决方法是将分隔符加倍,这可能很麻烦。我们编写了一个扩展原生 python 的自定义类
str.format()
string.Formatter
string.format()
以支持任意分隔符占位符语法
ReFormat
类
ReFormat
类,它扩展了 python
str.format()
# import custom class
import ReFormat
# prepare source data
odata = { "fname" : "Planet",
"lname" : "Earth",
"age" : "4b years",
}
# format output using .render()
# method of custom ReFormat class
#
vout = ReFormat.String("Hello <%fname%> <%lname%>!",odata).render()
print(vout)
陷阱str.format()