2010-08-12 22 views
3

的任意數量的佔位符,我可以做如何創建Python字符串與元素

string="%s"*3 
print string %(var1,var2,var3) 

,但我不能讓瓦爾到另一個變量,這樣我可以與即時創建瓦爾列表應用邏輯。 例如

if condition: 
    add a new %s to string variable 
    vars.append(newvar) 

else: 
    remove one %s from string 
    vars.pop() 
print string with placeholders 

如何與Python 2.6做到這一點任何想法?

+0

這似乎無可救藥複雜了。爲什麼要構建一個大格式字符串和一個大的值列表?爲什麼不將該格式應用於該值並將其附加到結果中?請展示更多您認爲您需要的內容。聽起來它可以全部簡化。 – 2010-08-12 14:49:48

+0

我不完全確定你要在這裏完成什麼,但我會採取一個答案。 – Omnifarious 2010-08-12 14:50:02

回答

6

這個怎麼樣?

print ("%s" * len(vars)) % tuple(vars) 

真的,儘管如此,這是一種相當愚蠢的做事方式。如果你只是想把所有變量壓縮在一個大字符串中,這可能是一個更好的主意:

print ''.join(str(x) for x in vars) 

這確實需要至少Python 2.4的工作。

+0

在2.4中正常工作,我只是試了一下。爲什麼它不工作? – katrielalex 2010-08-12 14:55:48

1
n = 0 
if condition: 
    increment n 
    vars.append(newvar) 

else: 
    decrement n 
    vars.pop() 

string = "%s" * n 
print string with placeholders 

但是,如果你只是加入變量,你並不需要字符串格式;爲什麼不這樣做:

"".join(map(str, vars)) 
3

使用列表中添加/刪除字符串,然後 「」。加入(yourlist)打印

>>> q = [] 
>>> for x in range(3): 
    q.append("%s") 
>>> "".join(q) 
'%s%s%s' 
>>> print "".join(q) % ("a","b","c") 
abc 
+0

呃。不要這樣做。 – katrielalex 2010-08-12 14:51:24

+0

絕對同意 - 不要這樣做!但是,如果由於某種原因,你真的想能夠從你的字符串中刪除_remove_格式(urgh!),那麼這似乎是最簡單的方法。如果可能,最好避免這種情況。 – pycruft 2010-08-13 09:19:19