join多个string(如果它们在Python中不是空的话)
我有四个string,其中任何一个都可以是空的。 我需要将它们连接成一个空格之间的string。 如果我使用:
new_string = string1 + ' ' + string2 + ' ' + string3 + ' ' + string4
如果string1
为空,则结果是新string的开始处string1
空白。 另外,如果string2
和string3
是空的,我有三个空格。
当我不需要它们时,我怎样才能轻松地join它们而没有空白空间?
>>> strings = ['foo','','bar','moo'] >>> ' '.join(filter(None, strings)) 'foo bar moo'
通过在filter()
调用中使用None
,它将删除所有的falsy元素。
如果您知道这些string没有前导/尾随空格:
>>> 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'
如果任何string有非前导/尾随空格,则可能需要更加努力地工作。 请澄清你实际上是什么。
strings = ['foo','','bar','moo'] ' '.join([x for x in strings if x is not '']) 'foo bar moo'