程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

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

发布于2023-01-18 20:41     阅读(1050)     评论(0)     点赞(19)     收藏(5)


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.



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1883095/157982d6c3e089e29c88/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

19 0
收藏该文
已收藏

评论内容:(最多支持255个字符)