2013-11-20 136 views
0

我們使用字符串模板通過提供字典來替換Python字符串中的某些值。它工作正常。儘管如此,儘管使用safe_substitute下面的代碼並不像預期的那樣工作。任何想法爲什麼?Python字符串模板

from string import Template 
obj = Template("$$Tag$$") 
obj.safe_substitute({}) 

Output : '$Tag$' Expected : '$$Tag$$' 
(As there is no value to replace in the dict supplied .) 

如果我將'##'作爲分隔符,'####'會出現同樣的問題。任何人都知道爲什麼它忽略了額外的分隔符?試圖瞭解發生了什麼。

+1

'不工作作爲expected':你預料究竟會? – njzk2

+0

任何投票的理由期望我沒有澄清預期的結果?希望它有一個SO問題。 – Nishant

+0

真棒傢伙!我明白這一點,如果這是一個分隔符,逃避這是真正價值的唯一途徑!那就是我想知道的細節。它與Linux bash中的'\'相同,我認爲。不管怎樣,謝謝 。 – Nishant

回答

2

docs

$$是轉義;它被替換爲單個$

如果你想雙$,那麼你可以使用類似:

>>> obj = Template("$$$$Tag$$$$") 
>>> obj.safe_substitute({}) 
'$$Tag$$' 
>>> obj.safe_substitute({'Tag':1}) 
'$$Tag$$' 
>>> obj = Template("$$$Tag$$$") #First $ escapes the second $ 
>>> obj.safe_substitute({'Tag':1}) 
'$1$$' 
1

從DOC:

「$$」 是一種逃避;它被替換爲單個「$」。

1

你必須把兩個美元符號爲您輸出所需的每個之一:

>>> Template('$$$$Tag$$$$').substitute() 
'$$Tag$$'