Соединение нескольких строк, если они не пусты в Python - PullRequest
56 голосов
/ 25 декабря 2011

У меня есть четыре строки, и любая из них может быть пустой. Мне нужно объединить их в одну строку с пробелами между ними. Если я использую:

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

Результатом является пустое место в начале новой строки, если string1 пусто. Кроме того, у меня есть три пробела, если string2 и string3 пустые.

Как я могу легко присоединиться к ним без пробелов, когда они мне не нужны?

Ответы [ 3 ]

152 голосов
/ 25 декабря 2011
>>> strings = ['foo','','bar','moo']
>>> ' '.join(filter(None, strings))
'foo bar moo'

Использование None в вызове filter() удаляет все ложные элементы.

18 голосов
/ 25 декабря 2011

Если вы ЗНАЕТЕ, что строки не имеют начальных / конечных пробелов:

>>> 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'

и если в какой-либо из строк есть пробелы без начального / конечного пробелов, вам, возможно, придется работать еще усерднее. Пожалуйста, уточните, что у вас есть на самом деле.

0 голосов
/ 25 декабря 2011
strings = ['foo','','bar','moo']
' '.join([x for x in strings if x is not ''])
'foo bar moo'
...