2011-12-24 16 views
43

私は4つの文字列を持っていて、どれも空にすることができます。私はそれらの間にスペースを入れて1つの文字列に結合する必要があります。私が使用している場合:複数の文字列がPythonで空でない場合に結合する

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

string1が空の場合、結果は新しい文字列の先頭に空白スペースです。また、string2string3が空の場合、3つの空白があります。

空きスペースなしで簡単に参加するにはどうすればいいですか?

答えて

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

'is not'ではなく'!= 'を使うのが良いです。それはうまくいくかもしれませんが、保証されていません。あるいは 'xの場合はxを文字列で'とする。 –

+5

**実際には両方が同じオブジェクトであるかどうかを実際に確認したくない場合は、非シングルトンの場合は決して**使用しないでください! – ThiefMaster

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

関連する問題