String comparison doesn't seem to work for lines read from a file

前端 未结 2 1141
北恋
北恋 2020-11-27 08:39

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:<

相关标签:
2条回答
  • 2020-11-27 09:02

    Strip the newline character:

    for line in f:
        print myline + " - " + line
        if myline == line.strip():
            print "We have a match!"
    
    0 讨论(0)
  • 2020-11-27 09:15

    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.

    0 讨论(0)
提交回复
热议问题