Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 536
PCRevolt Avatar asked Feb 21 '18 23:02

PCRevolt


2 Answers

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']
like image 145
juanpa.arrivillaga Avatar answered Sep 28 '22 07:09

juanpa.arrivillaga


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']
like image 25
jpp Avatar answered Sep 28 '22 07:09

jpp