解析字符串并用其值替换的最佳方法是什么?

2 投票
3 回答
802 浏览
提问于 2025-04-15 23:30

我可能有这样的字符串:

"""Hello, %(name)s,
how are you today, 
here is amount needed: %(partner_id.account_id.debit_amount)d
"""

对于这样的模板,最好的解决方案是什么呢?我可能需要结合正则表达式和 eval。输入的字符串可能会有所不同,比如 $partner_id.account_id.debit_amount$ - 目前我把它当作 Python 字符串格式来处理,只是为了测试。

3 个回答

1

如果你想找一些简单的东西,可以看看Python自带的模板功能。我经常用它来快速和轻松地创建模板,不需要额外安装其他软件包。

还有一个新的format()方法。

2

在Python 2.6和3.0中,字符串上新增了一个叫做.format()的方法。你可以查看这个PEP文档:http://www.python.org/dev/peps/pep-3101/

这个方法比之前的%运算符更强大、更灵活,而且是Python自带的功能:

下面是PEP文档中的一些例子:

"My name is {0}".format('Fred')
"My name is {0.name}".format(open('out.txt', 'w'))
"My name is {0[name]}".format({'name':'Fred'})

如果这个方法能满足你的需求,那就足够了;如果不够,可以看看像Jinja这样的模板引擎,正如其他人提到的那样。

0

如果你打算做一些复杂的模板处理,可以考虑使用一个高级的模板引擎,比如Jinja。还有很多其他的选择。

撰写回答