字符串模板替换:必须替换每个匹配项

时间:2018-05-02 13:26:23

标签: python string templates

我有以下MWE:

import string

class MyTemplate(string.Template):
   delimiter = '$'
   pattern = r'''
   \$(?:
   (?P<escaped>\$)|
   (?P<named>[_a-z][_a-z0-9]*)\$|
   (?P<braced>[_a-z][_a-z0-9]*)\$|
   (?P<invalid>)
   )
   '''
data1="max=$max$ min=$min$"
data2="max=$max$ "
print MyTemplate(data1).substitute({"max":"10","min":"1"})
print MyTemplate(data2).substitute({"max":"10","min":"1"})
print MyTemplate(data1).substitute({"max":"10"})

在3张照片中,我希望唯一可接受的情况是第一张; 最后一个引发异常,但第二个只是写道:

max=10 
  1. 如何检测此案例(值多于占位符)?
  2. 是否可以验证值只被替换一次?
  3. 谢谢!

1 个答案:

答案 0 :(得分:0)

这里真正的问题是&#34;你想要实现什么?&#34;并且&#34;它需要吗?&#34;和&#34;为什么需要?&#34;

如果在回答完所有内容后仍然需要,请覆盖substitute课程中的MyTemplate。你可以做任何你喜欢的检查。但是,它可能会减慢您的计划速度。

另一方面,string.Template(来自python 2.6)主要用于mystr.format()。然后,替换为f-strings(3.6)https://www.python.org/dev/peps/pep-0498/