我想要做的是:如何格式化python中的一部分字符串?
property = "name"
formatter = "my %s is %s" % property
print formatter % "wong2" // "my name is wong2"
但第一行給出「沒有足夠的論據格式字符串」的錯誤。
我想要做的是:如何格式化python中的一部分字符串?
property = "name"
formatter = "my %s is %s" % property
print formatter % "wong2" // "my name is wong2"
但第一行給出「沒有足夠的論據格式字符串」的錯誤。
>>> property = "name"
>>> formatter = "my %s is %%s" % property
>>> print formatter % "wong2"
my name is wong2
雙-%將格式化後創建一個單一百分號:
formatter = "my %s is %%s"
您可以通過加倍逃脫格式化它
formatter = "my %s is %%s" % property
你也可以做所有替換的同時使用名稱代替位置格式:
formatter = "my %(property)s is %(name)s"
print formatter % { "property": "name",
"name": "wong2" }
這種形式允許可變數量的置換(即,並非字典中的所有密鑰都需要被使用,並且它們可能被多次使用)。例如,如果從配置文件讀取格式字符串,這很重要。
這裏有一個有趣的方式與助手類做
>>> 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'
我個人不喜歡%
格式化語法,所以我會建議不太一樣以前的答案,但使用format
語法:
property = 'name'
formatter = "my {} is {{}}".format(property) #=> "my name is {}"
print formatter.format('wong')