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

Pandas调用API时含特殊字符的输入参数导致返回结果异常如何修复?

问题根因
  • 核心问题1:URL参数未编码:&属于URL的保留字符,作用是分隔不同查询参数。直接把含&、空格、中文这类特殊字符的参数拼接到URL中时,服务端会将&后的内容识别为独立参数,导致实际拿到的cat参数只有&前面的部分,返回的查询结果不符合预期,因此取到的data[0]不是对应输入的正确结果,看起来就像“错误取到第二条数据”。
  • 问题2:代码存在大小写不匹配的语法错误:函数内定义的变量是product_ID、product_Name,赋值给row时写为product_id、product_name,Python大小写敏感,该问题会触发未定义变量报错。
修复方案

不要手动拼接URL参数,改用requests.get自带的params参数传递查询参数,requests会自动对参数值做URL编码,无需手动处理即可解决特殊字符问题,同时修复变量名大小写错误即可。

修复后完整代码
import pandas as pd
import requests

def getSearchReturn(row):
    para = row['input']
    url = "http://localhost/product"
    try:
        # 通过params参数传参,自动完成URL编码,兼容特殊字符
        return_json = requests.get(url, params={"cat": para}).json()
        data = return_json['data']
        product_id = data[0]['product_id']
        product_name = data[0]['product_name']
    except:
        product_id = None
        product_name = None
    row['productID'] = product_id
    row['productName'] = product_name
    return row

data = pd.read_csv("input.csv") 
data = data.apply(getSearchReturn, axis=1)
data.to_csv("output.csv", index=False)
验证说明

如果需要确认请求是否正确,可以在请求后打印resp.url查看完整请求地址,你会看到abc & bbc会被自动编码为abc+%26+bbc,服务端可以正确识别完整的参数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 05:06:07