在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))
-它在我的代码中测试过,应该也适用于你或任何人