String comparison doesn't seem to work for lines read from a file
Why doesn't "We have a match!" get printed? What did I miss?
If you will notice the output on console you are getting double \n
(newlines) one because of print
second because in file every line has \n
at the end. Your file that looks like:
Line 1
Line 2
Line 3
Line 4
is basically: Line 1\nLine 2\nLine 3\nLine 4
(assuming you don't have any extra white spaces e.g. tabs, blank space).
In for loop: for line in f:
, end char of line
is \n
(and line
that you think is 'Line 3'
is actually 'Line 3\n'
) Hence your if
condition fails.
To remove that \n
just use str.strip([chars]);
function. The method strip()
returns a copy of the string in which all chars have been stripped from the beginning and the end of the string (default whitespace characters).
So, replace if myline == line:
by if myline == line.strip()
that is what @C.B.'s answer.
Strip the newline character:
for line in f:
print myline + " - " + line
if myline == line.strip():
print "We have a match!"