Python列表不追加元素:关键字筛选CSV行时matches列表为空故障排查
你的问题由两处逻辑错误导致,和文件保存为.csv还是.txt格式无关:
- 关键字读取逻辑错误:你的关键字文件是单行逗号分隔的字符串,原有代码逐行读取后直接存入列表,会导致
search_words列表中只有1个元素(完整的A2M,ABCC9,ACADVL,ACTC1,ACTN2,ADA2,AGL长字符串),没有拆分出单个待匹配的关键字。 - 行拆分逻辑错误:你的主文件字段用逗号分隔,原有代码用
line.split()(默认按空白字符拆分),会导致拆分后的current_line列表只有1个元素(整行完整内容),自然无法匹配到单独的关键字值。
修复后的完整代码
# 读取关键字文件,拆分出单个关键字 with open(r'file.csv','r', encoding='utf-8') as list_file: # 读取单行内容、去空白后按逗号拆分 search_words = list_file.readline().strip().split(',') matches = [] # 读取主文件 with open(r'file2.csv','r', encoding='utf-8') as master_file: for line in master_file: # 按逗号拆分当前行的所有字段 current_line = line.split(',') # 遍历关键字匹配 for search_word in search_words: if search_word in current_line: matches.append(line) break # 写入结果 with open(r'file3.txt', 'w', encoding='utf-8') as new_file: new_file.writelines(matches)
代码中使用with上下文管理器管理文件读写,不需要手动调用close()方法,可避免文件忘记关闭的异常,调整后即可输出你预期的结果。
内容的提问来源于stack exchange,提问作者manuelmm90
相关产品推荐
相关产品推荐

