2013-03-11 40 views
-3

如果我有一个字符串列表,其中一些包含{}中包含的代码,那么以后可以在这些字符串上使用format()吗?稍后格式化字符串?

如果我有这种情况,我想写一些关于身体损伤的风味文字,例如"He appears to be limping on his {1} leg.",但是我想根据所讨论的腿,用“左”或“右”格式化该字符串。

+0

我相信自己尝试并找出它会减少对SE的写作:) – 2013-03-11 10:15:23

回答

5

确定这是可能的。只是存储琴弦,后来他们打电话.format()

>>> someformat = 'Hello {}!' 
>>> someformat 
'Hello {}!' 
>>> print someformat.format('World') 
Hello World! 

.format()只是一个字符串的方法,只有当你调用该方法将字符串被解释为一个模板。就像.strip().join()一样,您可以在您选择的时间在任何字符串对象上调用该方法。

0

您将不得不使用{0}来匹配传递给format的第一个参数。

例子:

>>> s = "He appears to be limping on his {0} leg" 
>>> s.format("bad") 
'He appears to be limping on his bad leg' 
+0

您可以使用'{1}'就好:'s ='他似乎在他的{1}腿上进行链接“;打印s.format(无,'坏')'。 – 2013-03-11 10:23:32

+0

@MartijnPieters是的,有一个kludge :) – ATOzTOA 2013-03-11 10:24:09

+0

关键是没有什么东西强迫你使用传递给'.format()'方法的所有参数,你的答案在细节上有点太稀疏了。 – 2013-03-11 10:25:54

0

您可以拨打.format()当您需要它。

您可以在文件的最顶端定义格式字符串,甚至可以使用几次不同的数据。

当你真的称之为完全取决于你(对你的需求),只要你有它在某处引用。

即,不做

TEMPLATE = "He appears to be limping on his {0} leg." 
[...] 
TEMPLATE = TEMPLATE.format('left') 

因为你会失去你的原始模板。

相反,做

TEMPLATE = "He appears to be limping on his {0} leg." 
[...] 
leftsentence = TEMPLATE.format('left') 
[...] 
rightsentence = TEMPLATE.format('right') 
[...] 
middlesentence = TEMPLATE.format('middle') 

哪里,只要你需要。

+3

''中腿'? 'o.O' – Volatility 2013-03-11 10:27:30

+0

: - }试图搞笑... – glglgl 2013-03-11 10:33:12