Question

I need to fix some text that lies between delimiters for the following cases:
Case 1: {12345} (numbers between curlies) should become item_12345 (added 'item_', removed braces).
Case 2: [999] (numbers between square brackets) should become total_999

So this string: {242424} from X [100] bulks, linked to {57575757} from Y for [500] units should appear like this: item_242424 from X total_100 bulks, linked to item_57575757 from Y for total_500 units

How can this be done with regex?

Was it helpful?

Solution

This should get you started:

s = '{123} and [456]'

s = re.sub(r'\{(.+?)\}', r'foo_\1', s)
s = re.sub(r'\[(.+?)\]', r'bar_\1', s)

print s

OTHER TIPS

>>> import re
>>> curly = re.compile('\{([0-9]+)\}')
>>> square = re.compile('\[([0-9]+)\]')
>>> s = "{242424} from X [100] bulks, linked to {57575757} from Y for [500]"
>>> re.sub(square, lambda x: 'total_'+x.group(1), re.sub(curly, lambda x: 'item_
'+x.group(1),s))
'item_242424 from X total_100 bulks, linked to item_57575757 from Y for total_50
0'
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top