regex – Split string on whitespace in Python

The Question :

511 people think this question is useful

I’m looking for the Python equivalent of

String str = "many   fancy word \nhello    \thi";
String whiteSpaceRegex = "\\s";
String[] words = str.split(whiteSpaceRegex);

["many", "fancy", "word", "hello", "hi"]

The Question Comments :

The Answer 1

936 people think this answer is useful

The str.split() method without an argument splits on whitespace:

>>> "many   fancy word \nhello    \thi".split()
['many', 'fancy', 'word', 'hello', 'hi']

The Answer 2

75 people think this answer is useful
import re
s = "many   fancy word \nhello    \thi"
re.split('\s+', s)

The Answer 3

18 people think this answer is useful

Using split() will be the most Pythonic way of splitting on a string.

It’s also useful to remember that if you use split() on a string that does not have a whitespace then that string will be returned to you in a list.

Example:

>>> "ark".split()
['ark']

The Answer 4

17 people think this answer is useful

Another method through re module. It does the reverse operation of matching all the words instead of spitting the whole sentence by space.

>>> import re
>>> s = "many   fancy word \nhello    \thi"
>>> re.findall(r'\S+', s)
['many', 'fancy', 'word', 'hello', 'hi']

Above regex would match one or more non-space characters.

Add a Comment