Hello all, I'm new to python and inexperienced in programming but I'm trying hard. I have a shell script that I'm converting over to python. Part of the script replaces some lines of text. I can do this in python, and get the output I want, but so far only using sed. Here's an example script:
import subprocess, re list = ['Apples the color red', 'Sky i am the blue color', 'Grass the colour green is here', 'Sky i am the blue color'] def oldway(): sed_replacements = """ s/\(^\w*\).*red/\\1:RED/ s/\(^\w*\).*blue.*/\\1:BLUE/""" sed = subprocess.Popen(['sed', sed_replacements], stdin=subprocess.PIPE, stdout=subprocess.PIPE) data = sed.communicate("\n".join(list))[:-1] for x in data: print x oldway(); """ This produces: >>>Apples:RED >>>Sky:BLUE >>>Grass the colour green is here >>>Sky:BLUE Which is what I want""" print "---------------" def withoutsed(): replacements = [ (r'.*red', 'RED'), (r'.*blue.*', 'BLUE')] for z in list: for x,y in replacements: if re.match(x, z): print re.sub(x,y,z) break else: print z withoutsed(); """ Produces: >>>RED >>>Sky i am the blue color >>>BLUE >>>Grass the colour green is here >>>Grass the colour green is here >>>Sky i am the blue color >>>BLUE Duplicate printing + other mess = I went wrong""" I understand that it's doing what I tell it to, and that my for and if statements are wrong. What I want to do is replace matching lines and print them, and also print the non-matching lines. Can somebody please point me in the right direction? Any other python pointers or help much appreciated, Will. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor