You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.6读取文本指定行后if判断失效问题求助

问题原因与解决方案

哈哈,这个问题我刚学Python的时候也踩过坑!你遇到的问题根源在于readline()方法的特性——它会把每行末尾的换行符\n也一起读取到变量里。

具体解释

你打印line1时看到的是1,但实际上变量line1存储的是"1\n"(字符"1"加上换行符)。print()函数输出时会自动处理换行,所以你看不到额外的\n,但直接做字符串比较时,"1\n"和"1"显然不相等,因此会返回False。

你可以加一行代码验证这个问题:

print(repr(line1))  # 输出会是 '1\n',而不是 '1'

解决方法

有几种简单的方式可以处理这个问题:

  1. 用strip()去掉首尾空白字符
    这个方法会去掉字符串首尾的所有空白(包括换行符、空格、制表符等),适合不需要保留首尾空格的场景:

    file = open("text.txt", "r")
    line1 = file.readline().strip()
    line2 = file.readline().strip()
    line3 = file.readline().strip()
    print(line1)
    print(line2)
    print(line3)
    if line1 == "1":
        print("True")
    else:
        print("False")
    file.close()
    
  2. 用rstrip('\n')只去掉换行符
    如果你需要保留行首或行尾的空格,只想去掉换行符,可以用这个方法:

    line1 = file.readline().rstrip('\n')
    

更推荐的文件处理方式

另外,Python中推荐使用with语句来操作文件,它会自动帮你关闭文件,避免忘记close()导致的资源泄漏问题:

with open("text.txt", "r") as file:
    line1 = file.readline().strip()
    line2 = file.readline().strip()
    line3 = file.readline().strip()
    print(line1)
    print(line2)
    print(line3)
    if line1 == "1":
        print("True")
    else:
        print("False")

内容的提问来源于stack exchange,提问作者Someone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:22:36