Python:使用自定义分隔符格式化字符串[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:使用自定义分隔符格式化字符串[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
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
使用不同的分隔符。
答案
Using custom placeholder tokens with python string.format()
上下文
- python 2.7
string.format()
- 允许自定义占位符语法的替代方法
问题
我们想用python str.format()使用自定义占位符分隔符
string.format()
功能强大,但没有对占位符分隔符修改的原生支持。string.format()
使用花括号,这是非常常见的,并导致Delimiter collisionstring.format()
默认的解决方法是将分隔符加倍,这可能很麻烦。
解
我们编写了一个扩展本机python str.format()
的自定义类
- 使用自定义类扩展本机python
string.Formatter
- 配置
string.format()
以支持任意分隔符占位符语法 - 允许其他增强功能,如自定义格式化程序和过滤器
Example001:演示使用自定义ReFormat
类
- 我们写了一个自定义的
ReFormat
类,扩展了pythonstr.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'
}
以上是关于Python:使用自定义分隔符格式化字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章