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

Python用readlines()和split()识别提取相邻词失败问题求助

问题解决:无法识别k文件中的目标词汇endtim

问题根源

原代码的核心问题是未先判断目标词是否存在于当前行,就直接调用words.index(target_word)。遇到不含endtim的行时,会直接抛出ValueError导致程序中断,根本无法执行到包含目标词的那一行代码。此外,原代码也未实现「存储识别结果并写入新文件」的需求。

修正后的完整代码

# 定义目标词汇和结果存储列表
target_word = "endtim"
results = []

# 读取tshell.k文件内容
with open("tshell.k", "r") as k_file:
    lines = k_file.readlines()

# 逐行处理文件内容
for line_num, line in enumerate(lines, 1):
    words = line.split()
    # 先检查当前行是否包含目标词
    if target_word in words:
        target_idx = words.index(target_word)
        # 判断是否存在下一个相邻词
        if target_idx + 1 < len(words):
            next_word = words[target_idx + 1]
            result_msg = f"第{line_num}行:目标词「{target_word}」的相邻词为「{next_word}」"
            results.append(result_msg)
            print(result_msg)
        else:
            result_msg = f"第{line_num}行:找到目标词「{target_word}」,但无后续相邻词"
            results.append(result_msg)
            print(result_msg)

# 将识别结果写入新文件
with open("k文件识别结果.txt", "w") as result_file:
    result_file.write("\n".join(results))

关键修正点

  • 增加target_word in words的前置判断,避免无目标词的行触发报错
  • 使用enumerate记录行号,便于定位结果在原文件中的位置
  • 新增results列表统一存储识别结果,最后批量写入新文件
  • 完善索引边界判断,防止目标词位于行末尾时出现索引越界问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:55:10