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
相关产品推荐
相关产品推荐

