Or, open the file as a blob (one long string) and do a single 'replace'.
fin = open("dirtyfile.txt", 'r').read().replace('## ', '#')
open("dirtyfile.txt", 'w').write(fin)
or,
open("dirtyfile.txt", 'w').write(open("dirtyfile.txt",
'r').read().replace('## ', '#'))
----- Original Message -----
From: "Tommy Kaas" <[email protected]>
To: <[email protected]>
Sent: Monday, June 06, 2011 2:58 AM
Subject: Re: [Tutor] search-replace
-----Oprindelig meddelelse-----
Fra: [email protected]
[mailto:[email protected]] På vegne
af Alan Gauld
Sendt: 6. juni 2011 11:51
Til: [email protected]
Emne: Re: [Tutor] search-replace
"Tommy Kaas" <[email protected]> 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
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor