[Tutor] search-replace

Tommy Kaas tommy.kaas at kaasogmulvad.dk
Mon Jun 6 11:58:43 CEST 2011


> -----Oprindelig meddelelse-----
> Fra: tutor-bounces+tommy.kaas=kaasogmulvad.dk at python.org
> [mailto:tutor-bounces+tommy.kaas=kaasogmulvad.dk at python.org] På vegne
> af Alan Gauld
> Sendt: 6. juni 2011 11:51
> Til: tutor at python.org
> Emne: Re: [Tutor] search-replace
> 
> 
> "Tommy Kaas" <tommy.kaas at kaasogmulvad.dk> wrote
> 
> 
> > I'm especially interested to know how I do more than just one
> > search-replace without having to repeat the whole step below.
> > fin = open("dirtyfile.txt")
> > fout = open("cleanfile.txt", "w")
> > for line in fin:
> >    fout.write(line.replace('## ', '#'))
> > fin.close()
> > fout.close()
> 
> Can be simplified to:
> 
> with open("cleanfile.txt", "w") as fout:
>      for line in open("dirtyfile.txt"):
>            fout.write(line.replace('## ', '#'))
> 
> To do multiple replaces simply expand the inner block
> 
> 
>      for line in open("dirtyfile.txt"):
>            line = line.replace(....)   #first
>            line = line.replace(....)   #second etc
>            fout.write(line)
> 
> Or if you have a lot of them:
> 
> replacePatterns = [('##','#'),('!!!','!!'),....]
> 
>      for line in open("dirtyfile.txt"):
>             for old,new in repace_patterns:
>                  line = line.replace(old,new)
>             fout.write(line)
> 


Excellent! Thanks.
tommy



More information about the Tutor mailing list