在 python 中使用自定义占位符标记string.format()
语境
- 蟒蛇2.7
string.format()
- 允许自定义占位符语法的替代方法
问题
我们想在 python str.format() 中使用自定义占位符分隔符
string.format()
功能强大,但不支持修改占位符分隔符。
string.format()
使用非常常见的大括号并导致分隔符冲突
string.format()
默认的解决方法是将分隔符加倍,这可能很麻烦。
解决方案
我们编写了一个扩展原生 python 的自定义类str.format()
string.Formatter
使用自定义类扩展本机 python
- 配置
string.format()
为支持任意分隔符占位符语法
- 允许其他增强功能,例如自定义格式化程序和过滤器
ReFormat
Example001:自定义类的演示使用
- 我们编写了一个
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()
- 不能替代成熟的沙盒兼容模板解决方案