2012-03-30 61 views

回答

4
>>> property = "name" 
>>> formatter = "my %s is %%s" % property 
>>> print formatter % "wong2" 
my name is wong2 
3

雙-%將格式化後創建一個單一百分號:

formatter = "my %s is %%s" 
1

您可以通過加倍逃脫格式化它

formatter = "my %s is %%s" % property 

你也可以做所有替換的同時使用名稱代替位置格式:

formatter = "my %(property)s is %(name)s" 
print formatter % { "property": "name", 
        "name": "wong2" } 

這種形式允許可變數量的置換(即,並非字典中的所有密鑰都需要被使用,並且它們可能被多次使用)。例如,如果從配置文件讀取格式字符串,這很重要。

1

這裏有一個有趣的方式與助手類做

>>> property = "name" 
>>> class D(dict): 
...  def __missing__(self, key): 
...   return "%("+key+")s" 
... 
>>> formatter = "my %(property)s is %(value)s"%D(property=property) 
>>> formatter%D(value="wong2") 
'my name is wong2' 
1

我個人不喜歡%格式化語法,所以我會建議不太一樣以前的答案,但使用format語法:

property = 'name' 
formatter = "my {} is {{}}".format(property) #=> "my name is {}" 
print formatter.format('wong')