Vasia Pupkin
Vasia Pupkin

Reputation: 83

re.split() gives empty elements in list

please help with this case:

m = re.split('([A-Z][a-z]+)', 'PeopleRobots')
print (m)

Result:

['', 'People', '', 'Robots', '']

Why does the list have empty elements?

Upvotes: 8

Views: 1193

Answers (1)

falsetru
falsetru

Reputation: 369274

According to re.split documentation:

If there are capturing groups in the separator and it matches at the start of the string, the result will start with an empty string. The same holds for the end of the string:

If you want to get People and Robots, use re.findall:

>>> re.findall('([A-Z][a-z]+)', 'PeopleRobots')
['People', 'Robots']

You can omit grouping:

>>> re.findall('[A-Z][a-z]+', 'PeopleRobots')
['People', 'Robots']

Upvotes: 12

Related Questions