[Tutor] Better way to substitute text?

William Allison allison.william at comcast.net
Sat Sep 30 23:12:31 CEST 2006


Thanks David,
I like that better than my original.  I'll remember to NOT split the 
input file into lines
in the future.
Will

David Heiser wrote:
> You can make it simpler by not splitting the input file into lines.
> Treat it as a single string.
>
>     in_put = open('test.html', 'r').read()
>
>     replace_words = ['TWY', 'RWY', 'WIP']
>     for replace_word in replace_words:
>         in_put = in_put.replace(replace_word, "<b><font
> color='#FF0000'>" + replace_word + "</font></b>")
>
>     open('test_highlight.html', 'a').write(in_put)
>
>
>
> -----Original Message-----
> From: tutor-bounces at python.org [mailto:tutor-bounces at python.org] On
> Behalf Of William Allison
> Sent: Saturday, September 30, 2006 8:10 AM
> To: tutor at python.org
> Subject: Re: [Tutor] Better way to substitute text?
>
>
> Shantanoo Mahajan wrote:
>   
>> +++ William Allison [29-09-06 18:55 -0400]:
>> | 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()
>>
>>
>> replace_words = ['TWY', 'RWY', 'WIP']
>> for line in in_put:
>>         for replace_word in replace_words:
>>                 out_put.write(line.replace(replace_word,"<b><font 
>> color='#FF0000'>"+replace_word+"</font></b>"))
>>
>> You can furthur reduce for loops.
>>
>> Shantanoo
>>   
>>     
>
> Thanks Shantanoo,
> I like that a lot better.  Had to modify it just a little.
>
> replace_words = ['TWY', 'RWY', 'WIP']
> for line in in_put:
>        for replace_word in replace_words:
>               line = line.replace(replace_word, "<b><font 
> color='#FF0000'>" + replace_word + "</font></b>")
>               out_put.write(line)
>
> I can never quite get when to use a nested loop.
> Thanks again,
> Will
>
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
>   



More information about the Tutor mailing list