I'm trying to delete a specific line that contains a specific string.
I've a file called numbers.txt with the following content:
peter
tom
tom1
yan
What I want to delete is that tom from the file, so I made this function:
def deleteLine():
fn = 'numbers.txt'
f = open(fn)
output = []
for line in f:
if not "tom" in line:
output.append(line)
f.close()
f = open(fn, 'w')
f.writelines(output)
f.close()
The output is:
peter
yan
As you can see, the problem is that the function delete tom and tom1, but I don't want to delete tom1. I want to delete just tom. This is the output that I want to have:
peter
tom1
yan
Any ideas to change the function to make this correctly?
change the line:
to:
You can use regex.
The
$
means the end of the string.That's because
checks, whether
tom
is not a substring of the currentline
. But intom1
,tom
is a substring. Thus, it is deleted.You probably could want one of the following:
I'm new in programing and python (a few months)... this is my solution:
I'm sure there is a simpler way, just it's an idea. (my English it's not very good looking!!)
Just for fun, here's a two-liner to do it.
Challenge: someone post a one-liner for this.
You could also use the fileinput module to get arguably the most readable result: