EDITED
我必须使用字典中的值格式化字符串,但字符串已包含大括号。 E.g:
raw_string = """
DATABASE = {
'name': '{DB_NAME}'
}
"""
但是,当然,raw_string.format(my_dictionary)
会导致KeyErro。
有没有办法使用不同的符号与.format()
一起使用?
这不是How can I print literal curly-brace characters in python string and also use .format on it?的重复,因为我需要保持大括号,并为.format
使用不同的分隔符。
答案 0 :(得分:8)
我认为不可能使用其他分隔符。您需要使用双花括号{{
}}
来表示您不希望被format()
替换的花括号:
inp = """
DATABASE = {{
'name': '{DB_NAME}'
}}"""
dictionary = {'DB_NAME': 'abc'}
output = inp.format(**dictionary)
print(output)
<强>输出强>
DATABASE = {
'name': 'abc'
}
答案 1 :(得分:2)
string.format()
string.format()
我们想在python str.format()
中使用自定义占位符分隔符string.format()
功能强大,但没有对占位符分隔符修改的原生支持。string.format()
使用花括号,这是非常常见的并导致Delimiter collision string.format()
默认解决方法是将分隔符加倍,这可能很麻烦。我们编写了一个扩展本机python str.format()
string.Formatter
string.format()
以支持任意分隔符占位符语法ReFormat
类ReFormat
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()