Home > Software design >  Check for blanks at specified positions in a string
Check for blanks at specified positions in a string

Time:03-28

I have the following problem, which I have been able to solve in a very long way and I would like to know if there is any other way to solve it. I have the following string structure:

text = 01 ARA 22 - 02 GAG 23

But due to processing sometimes the spaces are not added properly and it may look like this:

text = 04 GOR23- 02 OER 23
text = 04 ORO 21-02 RRO 24
text = 04 DRE25- 12 RIS21

When they should look as follows:

text = 04 GOR 23 - 02 OER 23
text = 04 ORO 21 - 02 RRO 24
text = 04 DRE 25 - 12 RIS 21

To add the space in those specific positions, basically I check if in that position of the string the space exists, if it does not exist I add it.

Is there another way in python to do it more efficiently?

I appreciate any advice.

CodePudding user response:

You can use a regex to capture each of the components in the text, and then replace any missing spaces with a space:

import re

regex = re.compile(r'(\d{2})\s*([A-Z]{3})\s*(\d{2})\s*-\s*(\d{2})\s*([A-Z]{3})\s*(\d{2})')
text = ['04 GOR23- 02 OER 23',
'04 ORO 21-02 RRO 24',
'04 DRE25- 12 RIS21']
[regex.sub(r'\1 \2 \3 - \4 \5 \6', t) for t in text]

Output:

['04 GOR 23 - 02 OER 23',
 '04 ORO 21 - 02 RRO 24',
 '04 DRE 25 - 12 RIS 21']

CodePudding user response:

Here is another way to do so:

data = '04 GOR23- 02 OER 23'
new_data = "".join(char if not i in [2, 5, 7, 8, 10, 13] else f" {char}" for i, char in enumerate(data.replace(" ", "")))
  • Related