I have a file named test.txt that contains the following:
Line 1
Line 2
Line 3
Line 4
I have simple Python program like this:
f = open("test.txt")
myline = "Line 3"
for line in f:
print myline + " - " + line
if myline == line:
print "We have a match!"
if myline == "Line 3":
print "This works."
I got this result:
Line 3 - Line 1
Line 3 - Line 2
Line 3 - Line 3
Line 3 - Line 4
This works.
Why doesn't "We have a match!" get printed?
What did I miss?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With