Разделить строку с большим количеством пробелов

Имеется строка, например - "apple banana onion cucumber milk 1 139"

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

Должно получится так - ["apple banana onion", "cucumber milk", "1", "139"].


Ответы (3 шт):

Автор решения: S. Nick

Попробуйте так:

line = "apple banana onion         cucumber milk   1   139"

print([i.strip() for i in line.split("  ") if i ])
→ Ссылка
Автор решения: OPTIMUS PRIME
import re

print( re.split(r"\s\s+", "apple banana onion         cucumber milk   1   139") )

\s — space, пробельный символ. + — один или больше повторений подряд.

→ Ссылка
Автор решения: Stanislav Volodarskiy
import re

#         разбить строку на части
#         |
#         v      пробельный символ (\t\n\r\f\v и ещё много других)
#     --------   --
print(re.split(r'\s{2,}', 'apple banana onion         cucumber milk   1   139'))
#              -   ----
#              ^   повторить два или большее количество раз
#              |
#              raw-string, в таких строках обратный слеш
#              не имеет специального значения

Другие варианты:

  • '\\s{2,}' – обычная строка: нет r, обратный слеш повторён;
  • ' {2,}' – если надо обрабатывать именно пробелы, не пробельные символы;
  • ' *' – используются только самые базовые элементы регулярных выражений: звёздочка и пробел;
  • ' +' – это уже было в другом ответе в форме r'\s\s+';
  • '(?: | )+' – это больше шутка (математическая), но работает;
  • '(?: {2,3})+' – та же шутка.
→ Ссылка