Split string from digits/number according to sentence length

Question:

I have cases that I need to seperate chars/words from digits/numbers which are written consecutively, but I need to do this only when char/word length more than 3.

For example,
input

ferrari03

output must be:

ferrari 03

However, it shouldn’t do any action for the followings:
fe03, 03fe, 03ferrari etc.

Can you help me on this one ? I’m trying to do this without coding any logic, but re lib in python.

Asked By: ByUnal

||

Answers:

Using re.sub() we can try:

inp = ["ferrari03", "fe03", "03ferrari", "03fe"]
output = [re.sub(r'^([A-Za-z]{3,})([0-9]+)$', r'1 2', i) for i in inp]
print(output)  # ['ferrari 03', 'fe03', '03ferrari', '03fe']

Given an input word, the above regex will match should that word begin with 3 or more letters and end in 1 or more digits. In that case, we capture the letters and numbers in the 1 and 2 capture groups, respectively. We replace by inserting a separating space.

Answered By: Tim Biegeleisen
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.