Подтвердить что ты не робот

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

Мне нужна функция, похожая на string.split(''), но может быть более одного пробела и различного количества их между значимыми символами. Что-то вроде этого:

s = ' 1234    Q-24 2010-11-29         563   abc  a6G47er15               '
ss = s.magicSplit()
print ss
['1234','Q-24','2010-11-29','563','abc','a6G47er15']

Могу ли я каким-то образом использовать регулярные выражения для захвата этих пробелов между ними?

Может кто-нибудь помочь, пожалуйста?

4b9b3361

Ответ 1

Try

>>> ' 1234    Q-24 2010-11-29         563   abc  a6G47er15'.split()
['1234', 'Q-24', '2010-11-29', '563', 'abc', 'a6G47er15']

Или, если вы хотите

>>> class MagicString(str):
...     magicSplit = str.split
... 
>>> s = MagicString(' 1234    Q-24 2010-11-29         563   abc  a6G47er15')
>>> s.magicSplit()
['1234', 'Q-24', '2010-11-29', '563', 'abc', 'a6G47er15']

Ответ 2

s = ' 1234    Q-24 2010-11-29         563   abc  a6G47er15               '
ss = s.split()
print ss
['1234','Q-24','2010-11-29','563','abc','a6G47er15']

Ответ 3

Если у вас есть одни пробелы среди ваших данных (например, адрес в одном поле), вот решение для случая, когда разделитель имеет два или более пробелов:

with open("textfile.txt") as f:
    content = f.readlines()

    for line in content:
        # Get all variable-length spaces down to two. Then use two spaces as the delimiter.
        while line.replace("   ", "  ") != line:
            line = line.replace("   ", "  ")

        # The strip is optional here.
        data = line.strip().split("  ")
        print(data)

Ответ 4

Чтобы разделить строки на несколько пробелов, сохраняя при этом единичные пробелы в строках:

with open("textfile.txt") as f:
   for line in f:
      line = [i.strip() for i in line.split('  ') if i]
      print(line)