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

如何通过两列数据在CSV文件中精准查找对应行?

多条件精准匹配CSV行的问题解决

你需要通过名字(CSV第3列)和姓氏(CSV第4列)两个条件精准匹配目标行,但尝试的多条件代码因逻辑错误导致运行后无输出。

原单条件可运行代码

def searchByName():
    name=input('Insert name:')
    csv_file=csv.reader(open('names.csv', encoding="utf8"))

    for row in csv_file:
        if name==row[3]:
            print(row)

错误的多条件代码

def searchByName():
    fname=input('Insert name:')
    lname=input('enter last name:')
    csv_file=csv.reader(open('names.csv', encoding="utf8"))


    for row in csv_file:
        if fname==row[3] + lname==row[4]:
            print(row)

错误原因

你写的if条件 fname==row[3] + lname==row[4] 逻辑完全错误:Python会把它解析成(fname == (row[3] + lname)) == row[4]——先判断输入的名字是否等于「第3列内容+你输入的姓氏」,再把这个真假结果和第4列内容对比,这根本不是你要的「名字匹配第3列且姓氏匹配第4列」的逻辑,自然找不到符合的行。

正确的多条件匹配代码

import csv  # 别忘导入csv模块,原代码可能遗漏

def searchByName():
    fname = input('Insert first name: ')
    lname = input('Enter last name: ')
    # 用with语句管理文件,自动关闭避免资源泄漏
    with open('names.csv', encoding="utf8") as f:
        csv_file = csv.reader(f)
        for row in csv_file:
            # 用and连接两个独立的相等判断,同时满足才输出
            if fname == row[3] and lname == row[4]:
                print(row)

# 调用函数执行
searchByName()

额外优化提示

  • 如果CSV包含表头,可在循环前加next(csv_file)跳过第一行
  • 可以给输入和列内容加上strip()处理,比如fname.strip() == row[3].strip(),避免因前后空格导致匹配失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:31:05