python разделяет строку с не менее чем двумя пробелами

Я хотел бы разбить строку только там, где есть как минимум два или более пробелов.

Например

str = '10DEUTSCH        GGS Neue Heide 25-27     Wahn-Heide   -1      -1'
print str.split()

Результаты:

['10DEUTSCH', 'GGS', 'Neue', 'Heide', '25-27', 'Wahn-Heide', '-1', '-1']

Я хотел бы, чтобы это выглядело так:

['10DEUTSCH', 'GGS Neue Heide 25-27', 'Wahn-Heide', '-1', '-1']

Ответ 1

In [4]: import re    
In [5]: text = '10DEUTSCH        GGS Neue Heide 25-27     Wahn-Heide   -1      -1'
In [7]: re.split(r'\s{2,}', text)
Out[7]: ['10DEUTSCH', 'GGS Neue Heide 25-27', 'Wahn-Heide', '-1', '-1']

Ответ 2

Как было указано, str не является хорошим именем для вашей строки, поэтому вместо этого используйте words:

output = [s.strip() for s in words.split('  ') if s]

.Split('') - с двумя пробелами - даст вам список, который содержит пустые строки, и элементы с конечным/ведущим пробелом. Перечисление списка повторяется через этот список, содержит любые непустые элементы (if s) и.strip() заботится о любом ведущем/конечном пробеле.

Ответ 3

In [30]: strs='10DEUTSCH        GGS Neue Heide 25-27     Wahn-Heide   -1      -1'

In [38]: filter(None, strs.split("  "))

Out[38]: ['10DEUTSCH', 'GGS Neue Heide 25-27', ' Wahn-Heide', ' -1', '-1']

In [32]: map(str.strip, filter(None, strs.split("  ")))

Out[32]: ['10DEUTSCH', 'GGS Neue Heide 25-27', 'Wahn-Heide', '-1', '-1']