Python: format string with custom delimiters
本问题已经有最佳答案,请猛点这里访问。
编辑
我必须用字典中的值格式化一个字符串,但该字符串已经包含大括号。例如。:
1 2 3 4 5 | raw_string =""" DATABASE = { 'name': '{DB_NAME}' } """ |
但是,当然,
是否有方法使用不同的符号与
这不是一个副本,我如何在python字符串中打印文本大括号字符,并在上面使用.format?因为我需要保持花括号的原样,并为
我认为不可能使用替代定界符。您需要使用双花括号
1 2 3 4 5 6 7 8 | inp =""" DATABASE = {{ 'name': '{DB_NAME}' }}""" dictionary = {'DB_NAME': 'abc'} output = inp.format(**dictionary) print(output) |
产量
1 2 3 | DATABASE = { 'name': 'abc' } |
在python
- Python 2.7
string.format() - 允许自定义占位符语法的替代方法
问题
我们希望将自定义占位符分隔符与python str.format()一起使用。
string.format() 功能强大,但不支持对占位符分隔符修改的本地支持。string.format() 使用的大括号非常常见,会导致分隔符冲突。string.format() 默认的解决方法是将分隔符翻一番,这可能很麻烦。
解决方案
我们编写了一个扩展本机python
- 使用自定义类扩展本机python
string.Formatter 。 - 配置
string.format() 以支持任意分隔符占位符语法 - 允许其他增强功能,如自定义格式化程序和筛选器
示例001:自定义
- 我们编写了一个自定义的
ReFormat 类,扩展了pythonstr.format() 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 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() 。 - 不打算替代全面的沙盒兼容模板解决方案