Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove lines that contain certain string

Tags:

python

line

I'm trying to read a text from a text file, read lines, delete lines that contain specific string (in this case 'bad' and 'naughty'). The code I wrote goes like this:

infile = file('./oldfile.txt')  newopen = open('./newfile.txt', 'w') for line in infile :      if 'bad' in line:         line = line.replace('.' , '')     if 'naughty' in line:         line = line.replace('.', '')     else:         newopen.write(line)  newopen.close() 

I wrote like this but it doesn't work out.

One thing important is, if the content of the text was like this:

good baby bad boy good boy normal boy 

I don't want the output to have empty lines. so not like:

good baby  good boy normal boy 

but like this:

good baby good boy normal boy 

What should I edit from my code on the above?

like image 581
H.Choi Avatar asked Aug 15 '12 12:08

H.Choi


1 Answers

You can make your code simpler and more readable like this

bad_words = ['bad', 'naughty']  with open('oldfile.txt') as oldfile, open('newfile.txt', 'w') as newfile:     for line in oldfile:         if not any(bad_word in line for bad_word in bad_words):             newfile.write(line) 

using a Context Manager and any.

like image 162
sloth Avatar answered Sep 18 '22 23:09

sloth