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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:02:43