如果它们在Python中不为空,则连接多个字符串

时间:2011-12-24 20:23:15

标签: python string join

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

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

如果string1为空,则结果是新字符串开头的空格。另外,如果string2string3为空,我有三个空格。

如果我不需要它们,如何在没有空格的情况下轻松加入它们?

3 个答案:

答案 0 :(得分:149)

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

filter()调用中使用None,它会删除所有虚假元素。

答案 1 :(得分:17)

如果您知道字符串没有前导/尾随空格:

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

如果任何字符串都有非前导/尾随空格,您可能需要更加努力地工作。请说明你实际拥有的是什么。

答案 2 :(得分:-2)

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