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

Python检索文件含指定单词的行仅打印前10条的实现问题

功能需求
  • 接收用户输入的指定单词,统计目标文件中包含该单词的总行数
  • 匹配内容最多展示前10条命中的行
  • 若没有任何行包含目标单词,固定输出Not found.
原有代码问题

原代码存在几个会影响运行、不符合需求的问题:

  • 残留了和当前需求无关的逻辑:words_count、maxlines两个变量未初始化就直接使用,运行时会直接抛出名称错误
  • 匹配遍历过程中会打印所有命中的行,没有做10条的展示数量限制
  • 输出逻辑顺序错误:即使没有匹配到任何内容,也会先打印0 lines contain xxx的提示,再输出Not found.,不符合要求
  • 没有处理行尾换行、文件编码等细节,容易出现打印空行、中文乱码等问题
修改后完整代码
# 读取文件所有行
sentences = []
with open("txt.txt", "r", encoding="utf-8") as file:
    for line in file:
        # 仅移除行尾换行符,保留行内原始格式
        sentences.append(line.rstrip("\n"))

word = input("Enter word: ").strip()
match_count = 0

for line in sentences:
    # 若需要整词匹配(避免搜索"a"匹配到"apple"这类子串误判),可将判断条件改为 if word in line.split()
    if word in line:
        match_count += 1
        # 仅前10条匹配结果打印内容
        if match_count <= 10:
            print(line)

# 按要求输出结果
if match_count == 0:
    print("Not found.")
else:
    print(f"\n{match_count} lines contain {word}")
    if match_count > 10:
        print("* 仅展示前10条匹配结果")
关键修改说明
  • 移除了原代码中未定义的冗余变量逻辑,解决运行报错问题
  • 计数和展示逻辑分离:遍历全量文件行保证总匹配行数统计准确,不会因为只展示10条就漏算后续命中的行;仅当命中序号≤10时才打印行内容,满足展示数量限制
  • 调整结果判断逻辑:无匹配结果时直接输出Not found.,不会输出多余的0行统计提示
  • 补充文件编码参数、行尾换行处理,解决乱码、多余空行的细节问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:48:31