2016-12-29 57 views

回答

1

根据documentation,占位符值的默认正则表达式是[_a-z][_a-z0-9]*,这意味着/字符不被允许。如果你想允许这样做,你应该继承Template并重新定义idpattern表达:

from string import Template 

class MyTemplate(Template): 
    idpattern = r"[_a-z][_a-z0-9/]*" # allowing forward slash 

key_val = {'a/b/c': 1} 
ans = MyTemplate('val of ${a/b/c}').substitute(key_val) 

演示:

In [8]: from string import Template 

In [9]: class MyTemplate(Template): 
    ...:  idpattern = r"[_a-z][_a-z0-9/]*" # allowing forward slash 
    ...:  

In [10]: key_val = {'a/b/c': 1} 

In [11]: ans = MyTemplate('val of ${a/b/c}').substitute(key_val) 

In [12]: ans 
Out[12]: 'val of 1' 
+0

太好了!谢谢。 – Sandeep