On 7 August 2010 04:35, TGW <galaxywatc...@gmail.com> wrote: > I have a pipe delimited text file with 5 columns which looks like this: > 12345|some text|some more text|example125 oo3 3456|example32423 > 11223|more text|and more|example/73d 77665|example455667 > 12677|text|more|anotherexample 123|anotherexample45 > > What I want to output is: > 12345|some text|some more text|example|example32423 > 11223|more text|and more|example|example455667 > ... > 12677|text|more|anotherexample 123|anotherexample45 > > So column 4 is where the change occurs, but only if the beginning of the > string in column 4 =~ /^example/i # and it should be case insensitive > > #!/usr/bin/env python > import csv > import re > > filename = raw_input("Enter the filename to edit: ") > > reader = csv.reader(open(filename, 'rb'), delimiter='|', > quoting=csv.QUOTE_NONE) > for row in reader: > print row > > .... > I can print the file, I just need a little help searching and replacing the > column 4 data element.
You can test if one item in your list begins with example like: ' example125 oo3 3456'.lstrip()[:7].lower() == 'example' lstrip() will remove any unwanted white space on the left side of the string. slice [:7] will give you the first 7 characters from the string. lower() will make the string lower case so your requirement for case insensitive is met. Then your loop would look like (untested): for row in reader: if row[3].lstrip()[0:7].lower() == 'example': row[3] = row[3].lstrip()[:7] #we replace the fourth item. print row Greets Sander _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor