PCRevolt
PCRevolt

Reputation: 139

Split on more than one space?

I have a program that needs to split lines that are of the format:

IDNumber      Firstname Lastname    GPA      Credits

but I want to keep Firstname and Lastname in the same string.

Is there any easy way to do this (other than just splitting into five strings instead of four) and somehow have the split method only split when there is more than one space?

Upvotes: 12

Views: 13270

Answers (2)

juanpa.arrivillaga
juanpa.arrivillaga

Reputation: 95908

Use regex to split on two or more spaces:

>>> re.split(r" {2,}", s)
['IDNumber', 'Firstname Lastname', 'GPA', 'Credits']

If you want to split on two or more white-space characters generally, then use:

re.split(r"\s{2,}", s)

e.g.:

>>> s = "hello, world\t\tgoodbye cruel world"
>>> print(s)
hello, world        goodbye cruel world
>>> re.split(r"\s{2,}", s)
['hello, world', 'goodbye cruel world']

Upvotes: 19

jpp
jpp

Reputation: 164623

If you want to split by any whitespace, you can use str.split:

mystr.split()

# ['IDNumber', 'Firstname', 'Lastname', 'GPA', 'Credits']

For two or more spaces:

list(filter(None, mystr.split('  ')))

# ['IDNumber', 'Firstname Lastname', 'GPA', 'Credits']

Upvotes: 10

Related Questions