Skip to content Skip to sidebar Skip to footer

Search Patterns Replacement Using Lambda

I need to write into a file with Before and after search replacement patterns. I have written the below code. I have used function in writing to output file and it worked fine. But

Solution 1:

I didn't see why you put the re.IGNORECASE flag under the form of (?i), so I don't use it the following solution, and the pattern is written with the uppercased letters where necessary according to your sample

Note that you should use the with statement to open the files, it would be far better:

withopen('filename.txt','rb') as f:

    ch = f.read() 

The answer

import re

 st = '''<InTime='10Azx'>1056789</InTime>
 <OutTime='14crg'>1056867</OutTime>
 <PsTime='32lxn'>1056935</PsTime>
 <ClrTime='09zvf'>1057689</ClrTime>
 '''

 d = dict(zip(('InTime','OutTime','PsTime','ClrTime'),

              (('Izone><Invl','/Invl></Izone'),
               ('Ozone><onvl','/onnvl></Ozone'),
               ('Pszone><psnvl','/psnvl></Pszone'),
               ('Clzone><clnvl','/clnvl></Clzone'))
              )
          )

 defripl(ma,d=d):
      return"<{}='{}'>{}<{}>".format(d[ma.group(1)][0],
                                      ma.group(2),
                                      ma.group(3),
                                      d[ma.group(1)][1])

 st2 = re.sub(r"<(InTime|OutTime|PsTime|ClrTime)='(\d+\w+)'>(.*?)</\1>",
             ripl, st)

 print'%s\n\n%s\n' % (st,st2)

Post a Comment for "Search Patterns Replacement Using Lambda"