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

Reply via email to