Python string.Template:替换包含空格的字段

时间:2016-07-27 13:31:03

标签: python string python-2.7 replace

使用Python的string.Template类 - 如何将$ {}用于包含空格的字典中的字段?

E.g。

t = string.Template("hello ${some field}")
d = { "some field": "world" }
print( t.substitute(d) ) # Returns "invalid placeholder in string"

编辑:这是我能得到的最接近的,但需要注意的是所有变量都需要用括号括起来(否则所有空格分隔的单词都会匹配)。

class MyTemplate(string.Template):
   delimiter = '$'
   idpattern = '[_a-z][\s_a-z0-9]*'

t = MyTemplate("${foo foo} world ${bar}")
s = t.substitute({ "foo foo": "hello", "bar": "goodbye" })
# hello world goodbye

2 个答案:

答案 0 :(得分:0)

以防这可能对其他人有帮助。在python 3中,您可以使用format_map

t = "hello {some field}"
d = { "some field": "world" }
print( t.format_map(d) )

# hello world

答案 1 :(得分:0)

来自Doc,它说我们可以使用模板选项

https://docs.python.org/dev/library/string.html#template-strings

import string

class MyTemplate(string.Template):
    delimiter = '%'
    idpattern = '[a-z]+ [a-z]+'

t = MyTemplate('%% %with_underscore %notunderscored')
d = { 'with_underscore':'replaced', 
      'notunderscored':'not replaced',
      }

print t.safe_substitute(d)