join多个string(如果它们在Python中不是空的话)

我有四个string,其中任何一个都可以是空的。 我需要将它们连接成一个空格之间的string。 如果我使用:

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

如果string1为空,则结果是新string的开始处string1空白。 另外,如果string2string3是空的,我有三个空格。

当我不需要它们时,我怎样才能轻松地join它们而没有空白空间?

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

通过在filter()调用中使用None ,它将删除所有的falsy元素。

如果您知道这些string没有前导/尾随空格:

 >>> 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' 

如果任何string有非前导/尾随空格,则可能需要更加努力地工作。 请澄清你实际上是什么。

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