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

求助:编写Python函数搜索CSV指定值并返回其右侧相邻值

原代码问题梳理

  • pandas.read_csv 传参错误:第二个参数是分隔符配置项,不是文件打开模式,同时你的CSV没有表头,需要额外指定header=None避免把第一行数据识别为列名。
  • 变量命名冲突:循环变量直接使用了和入参searchstring相同的命名,直接覆盖了传入的搜索目标值,逻辑完全错乱。
  • 匹配逻辑错误:没有逐行匹配目标值,取值逻辑也不符合需求。

修正后可运行代码

依赖pandas版本

import pandas as pd

def wordfinder(search_val):
    # 读取无表头CSV文件,指定分隔符为逗号
    df = pd.read_csv('test.csv', header=None)
    # 匹配第二列的目标值(索引从0开始计数,第二列索引为1),取对应行第三列的值
    match_rows = df[df[1] == search_val]
    if not match_rows.empty:
        res = match_rows.iloc[0, 2]
        print(res)
        return res
    # 无匹配结果时返回None,可根据需求调整返回值
    return None

# 测试调用
wordfinder(2888)

标准库无依赖版本

不需要安装pandas,直接用Python内置csv模块实现:

import csv

def wordfinder(search_val):
    search_str = str(search_val)
    with open('test.csv', 'r', encoding='utf-8') as f:
        reader = csv.reader(f)
        for row in reader:
            if row[1] == search_str:
                # 可根据需求决定是否转成int类型返回
                res = int(row[2])
                print(res)
                return res
    return None

适配目标值可出现在任意列的版本

如果搜索目标不固定在第二列,需要匹配任意位置的目标值后取右侧相邻值,可使用下方实现:

def wordfinder(search_val):
    search_str = str(search_val)
    with open('test.csv', 'r', encoding='utf-8') as f:
        for line in f:
            row = line.strip().split(',')
            if search_str in row:
                idx = row.index(search_str)
                # 校验目标值不是行末尾元素,存在右侧相邻值
                if idx < len(row) - 1:
                    res = row[idx+1]
                    print(res)
                    return res
    return None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:24:04