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

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

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

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

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

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

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

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

如果您知道字符串没有前/后的空格:

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

otherwise:

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

如果其中任何字符串具有非前/后空格,则可能需要更加努力地工作。请说明你到底有什么。