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!"