2011-12-24 49 views
43

我有四個字符串,其中任何一個都可以爲空。我需要將它們連接成一個空格之間的字符串。如果我使用:加入多個字符串(如果它們在Python中不爲空)

new_string = string1 + ' ' + string2 + ' ' + string3 + ' ' + string4 

結果是在新的字符串的開頭一個空格,如果string1是空的。另外,如果string2string3爲空,我有三個空格。

當我不需要它們時,我怎樣才能輕鬆地加入它們而不留空白空間?

回答

100
>>> strings = ['foo','','bar','moo'] 
>>> ' '.join(filter(None, strings)) 
'foo bar moo' 

通過在filter()通話使用None,它會刪除所有falsy元素。

-2
strings = ['foo','','bar','moo'] 
' '.join([x for x in strings if x is not '']) 
'foo bar moo' 
+4

更好地使用'!='而不是'不是'。它可能有效,但不能保證。或者使用'[x for x in string if if]]。 – 2011-12-24 20:48:35

+5

**如果你實際上不想檢查兩個是否是同一個對象,那麼永遠不要**對於非單身人士來說不是'! – ThiefMaster 2011-12-24 21:38:45

9

如果你知道這些字符串沒有前導/尾隨空白:

>>> strings = ['foo','','bar','moo'] 
>>> ' '.join(x for x in strings if x) 
'foo bar moo' 

否則:

>>> strings = ['foo ','',' bar', ' ', 'moo'] 
>>> ' '.join(x.strip() for x in strings if x.strip()) 
'foo bar moo' 

,如果任何字符串具有非領導/尾隨空白,你可能還需要更加努力地工作。請說明你實際擁有的是什麼。

+0

字符串來自輸入文本字段,所以一切都是可能的。謝謝! – Goran 2011-12-24 21:50:46

相關問題