Ответ 1
>>> strings = ['foo','','bar','moo']
>>> ' '.join(filter(None, strings))
'foo bar moo'
Используя None
в вызове filter()
, он удаляет все элементы фальши.
У меня есть четыре строки, и любой из них может быть пустым. Мне нужно объединить их в одну строку с пробелами между ними. Если я использую:
new_string = string1 + ' ' + string2 + ' ' + string3 + ' ' + string4
Результат - пустое место в начале новой строки, если string1
пусто. Кроме того, у меня есть три пробела, если string2
и string3
пусты.
Как я могу легко присоединиться к ним без пробелов, когда они мне не нужны?
>>> strings = ['foo','','bar','moo']
>>> ' '.join(filter(None, strings))
'foo bar moo'
Используя None
в вызове filter()
, он удаляет все элементы фальши.
Если вы ЗНАЕТЕ, что строки не имеют начального/конечного пробела:
>>> 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'
и если какая-либо из строк имеет не ведущее/конечное пустое пространство, вам может потребоваться еще больше работать. Просьба уточнить, что именно вы на самом деле имеете.
strings = ['foo','','bar','moo']
' '.join([x for x in strings if x is not ''])
'foo bar moo'