这个问题在这里已有答案:
EDITED
我必须使用字典中的值格式化字符串,但字符串已包含大括号。例如。:
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
使用不同的分隔符。
string.format()
string.format()
我们想用python str.format()使用自定义占位符分隔符
string.format()
功能强大,但没有对占位符分隔符修改的原生支持。string.format()
使用花括号,这是非常常见的,并导致Delimiter collisionstring.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()
我认为不可能使用替代分隔符。你需要使用双花括号{{
}}
用于你不想被format()
替换的花括号:
inp = """
DATABASE = {{
'name': '{DB_NAME}'
}}"""
dictionary = {'DB_NAME': 'abc'}
output = inp.format(**dictionary)
print(output)
产量
DATABASE = {
'name': 'abc'
}