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

Python如何正确判断字符串是否存在于文件中,解决单字符匹配误判问题

问题原因

  • f.read() 会一次性读取文件全部内容,读取完成后文件指针会移动到文件末尾,第二次及之后循环调用f.read()只会返回空字符串,后续匹配会全部失效。
  • in 运算符对字符串做判断时是子字符串匹配,只要输入的内容是文件内容任意位置的子串就会返回真,所以输入单个A会匹配到ALONE里的A,导致误判。

修复方案

提前把文件内所有有效答案按行读取存入列表,匹配时直接判断输入内容是否和列表中的某一项完全相等。

修正后代码

# 提前读取所有答案,按行拆分,自动去除每行末尾的换行符
with open('D:/VB/Prog/topic1.txt', 'r', encoding='utf-8') as f:
    valid_answers = [line.strip().upper() for line in f if line.strip()]

for i in range(10):
    answer = input(f'{i+1}. ').upper()
    if answer in valid_answers:
        print("found")
    else:
        print("not found")
        break

代码说明

  • 使用with语法打开文件,会自动完成文件关闭操作,避免资源泄漏
  • 读取时逐行处理,用strip()去掉每行首尾的空白字符(包括换行符、空格),过滤空行后存入valid_answers列表
  • 匹配时直接判断输入的answer是否在有效答案列表中,只有完全相等才会返回真,不会出现子串误匹配的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:06:05