Python新手求助:CSV文件特定单词查找功能失效问题排查
问题排查与代码修复
嘿,我来帮你搞定这个问题!你现在遇到的找不到单词的情况,核心是代码里的判断逻辑出了小问题,咱们一步步来修正:
你代码里的几个关键问题
- 你在循环里写的是
if pilar in csv_file,但csv_file是整个CSV文件的迭代器对象,不是当前行的内容啊!应该检查输入的内容是否在当前遍历的row(也就是每一行的单元格列表)里。 - 现在的逻辑会对每一行都输出一次结果,不管找到没找到——这显然不对,应该遍历完所有行后,确定没找到再输出“Não encontrei”。
- 另外,直接用
open()打开文件后没手动关闭,最好用with语句来自动管理文件,这样更规范也不会漏关文件。
修正后的完整代码
import csv # 别忘了导入csv模块,你原代码里没写,估计是漏了,这会直接报错的 def pilar(): pilar_input = input("Perfil do pilar: ") # 用with语句打开文件,自动帮你关闭,不用手动管 with open(r"C:\Users\tomas\Documents\ISEP\5º Ano\TESE\PROGRAMA\PERFIS.csv", 'r', encoding='utf-8') as file: csv_reader = csv.reader(file) found_flag = False # 用一个标记来记录有没有找到目标 for row in csv_reader: # 检查输入的内容是否在当前行的某个单元格里 if pilar_input in row: print("Pilar: ", pilar_input) found_flag = True break # 找到就直接跳出循环,不用再往下找了 # 等所有行都遍历完,如果还是没找到,再输出提示 if not found_flag: print("Não encontrei") pilar()
额外小提示
- 还要注意输入的单词和CSV里的内容有没有大小写差异或者前后空格的情况,比如你输入
PilarA,但CSV里是pilara或者PilarA,这都会导致匹配失败。如果想忽略大小写,可以把判断改成:if pilar_input.lower() in [cell.lower() for cell in row]。 - 一定要记得导入
csv模块,不然代码根本跑不起来哦!
内容的提问来源于stack exchange,提问作者user18247408
相关产品推荐
相关产品推荐

