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

Gor*_*ran 58 python string join

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

new_string = string1 + ' ' + string2 + ' ' + string3 + ' ' + string4
Run Code Online (Sandbox Code Playgroud)

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

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

Thi*_*ter 162

>>> strings = ['foo','','bar','moo']
>>> ' '.join(filter(None, strings))
'foo bar moo'
Run Code Online (Sandbox Code Playgroud)

通过Nonefilter()调用中使用,它将删除所有有缺陷的元素.

  • 将此解决方案应用于数据框的列时,如何应用此解决方案。当您尝试 `df.apply(", ".join(filter(None, ...)), axis=1)` 时。如何传递过滤器函数的第二个参数? (2认同)

Joh*_*hin 19

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

>>> strings = ['foo','','bar','moo']
>>> ' '.join(x for x in strings if x)
'foo bar moo'
Run Code Online (Sandbox Code Playgroud)

除此以外:

>>> strings = ['foo ','',' bar', ' ', 'moo']
>>> ' '.join(x.strip() for x in strings if x.strip())
'foo bar moo'
Run Code Online (Sandbox Code Playgroud)

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