Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中连接多个字符串(如果它们不是空的)_Python_String_Join - Fatal编程技术网

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

在Python中连接多个字符串(如果它们不是空的),python,string,join,Python,String,Join,我有四个字符串,其中任何一个都可以是空的。我需要把它们连接成一个字符串,中间有空格。如果我使用: new_string = string1 + ' ' + string2 + ' ' + string3 + ' ' + string4 如果string1为空,则结果是新字符串开头有一个空格。另外,如果string2和string3为空,则有三个空格 当我不需要它们时,我如何在没有空格的情况下轻松加入它们 >>> strings = ['foo','','bar','moo']

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

new_string = string1 + ' ' + string2 + ' ' + string3 + ' ' + string4
如果
string1
为空,则结果是新字符串开头有一个空格。另外,如果
string2
string3
为空,则有三个空格

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

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

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

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

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'
否则:

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

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

最好使用
=而不是
不是
。它可能会起作用,但不能保证一定会起作用。或者只需使用
[x代表字符串中的x,如果x]
。如果您实际上不想检查这两个对象是否相同,请不要对非单例使用
is not
!字符串来自输入文本字段,因此一切都是可能的。谢谢在将此应用于数据帧的列时,如何应用此解决方案。当您尝试
df.apply(“,”.join(filter(None,…)),axis=1)时
。如何传递过滤函数的第二个参数?@Michael,试试
“,”.join(过滤(无,df.apply(一个没有括号的函数调用),它迭代了所有行,返回一些第二个参数,axis=1))
-它在我的代码中测试过,应该也适用于你或任何人