Split at number-letter

Viewed 43

I want to split 'E100N05' into ['E100', 'N05'] , so split after a number become the letter N, E, S or W. The number of digits after a letter can be different.

import re
re.split('[NSEW$*]', 'E100N05')
Out[8]: ['', '100', '05']

What I want : ['E100','N05']

Which pattern should I use?

3 Answers

How about we rephrase the problem, so instead of "splitting" we just find all letters+numbers tokens, so:

import re

res = re.findall('[a-z]+\d+', 'E100N05', re.I)

print(res)

Output:

['E100', 'N05']

Try this:

>>> re.split('(?!^)(?=[NSEW$])', 'E100N05')
['E100', 'N05']
>>> 

you can use re.findall() like below:

import re
re.findall('[NSEW$*]\d+', 'E100N05')
# ['E100', 'N05']
Related