William Allison wrote: > Hi, > Just learning Python, on chapter 6 of Learning Python 2nd Ed. So, on to > the question. Is there a better way to > implement the code below? It scans a saved html file and highlights > certain keywords is a bold, red font. It works, > but I suppose I'm wondering if it's the "Pythonic" way. > Thanks, > Will > > #!/usr/bin/env python > > in_put = open('test.html', 'r') > out_put = open('test_highlight.html', 'a') > > for line in in_put: > line = line.replace("TWY", "<b><font > color='#FF0000'>TWY</font></b>") > line = line.replace("RWY", "<b><font > color='#FF0000'>RWY</font></b>") > line = line.replace("WIP", "<b><font > color='#FF0000'>WIP</font></b>") > out_put.write(line) > > in_put.close() > out_put.close()
There is no need to process the file a line at a time unless it is too big to fit in memory. I would read it all at once: in_put = open('test.html', 'r') data = in_put.read() in_put.close() data = data.replace("TWY", "<b><font color='#FF0000'>TWY</font></b>") data = data.replace("RWY", "<b><font color='#FF0000'>RWY</font></b>") data = data.replace("WIP", "<b><font color='#FF0000'>WIP</font></b>") out_put = open('test_highlight.html', 'a') out_put.write(data) out_put.close() Since the replacements are so similar, you could do all three with a single regular expression replace: import re data = re.sub('TWY|RWY|WIP', r"<b><font color='#FF0000'>\0</font></b>", data) I don't see a strong reason to prefer any one of these; my preference is for the last because it is short and doesn't repeat the substitution text. Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor