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

Python拼接URL与CSV数据时的格式错误及迭代异常问题求助

Python拼接URL与CSV数据时的格式错误及迭代异常问题求助

看起来你已经走了大部分流程啦,遇到的两个问题其实都是很常见的pandas数据处理小坑,咱们一步步来解决:

问题1:Token ID末尾出现.0导致URL格式错误

你看到的34.0是因为pandas读取CSV时,把token_id列识别成了浮点数类型(大概率是你的CSV里这一列存在空值,或者混合了数字与空值格式,pandas自动将其转为了float类型)。拼接字符串时浮点数会默认带上.0,这肯定会导致API请求返回错误。

解决方法有两种:

  • 方法一:读取CSV时直接指定列类型
    修改pd.read_csv代码,给token_id指定整数或字符串类型,从源头避免类型问题:
    df = pd.read_csv(
        '~/Documents/top_10_nft.csv',
        usecols=['chain','contract_address' ,'token_id'],
        delimiter=',',
        dtype={'token_id': int}  # 如果token_id包含非整数字符,就改用str类型
    )
    
  • 方法二:在循环内临时转换类型
    如果你不想修改读取逻辑,可以在循环里把token_id转成整数再转字符串:
    token_id = str(int(row['token_id']))
    
    注意:如果token_id存在空值,这行代码会报错,所以一定要先处理空值。

问题2:疑似只处理最后一行/跳过前面行

你提到打印的是最后一行的URL,且怀疑跳过了前面的行,这大概率是因为你调用df.dropna(subset=['chain','contract_address' ,'token_id'])时没有把结果赋值回原DataFrame!pandas的大多数方法都是返回新的DataFrame,不会直接修改原数据,所以原来的df还是包含空值的行,循环时这些空值行拼接出的无效URL可能被你忽略,只注意到了最后一行正常的结果。

修改这行代码,确保后续循环使用清理后的数据集:

# 把dropna的结果赋值给df,替换原数据
df = df.dropna(subset=['chain','contract_address' ,'token_id'])

另外,你在循环外定义的contract_address、chain、token_id变量其实是冗余的,循环内已经重新赋值,可以直接删掉。

额外优化建议

  1. 简化循环内的代码,不用单独赋值三个变量,直接用row的值拼接:
    url = f"https://api.opensea.io/v2/chain/{row['chain']}/contract/{row['contract_address']}/nfts/{str(int(row['token_id']))}"
    
  2. 增加异常处理,避免请求失败时程序直接崩溃:
    try:
        response = requests.get(url, headers=headers)
        response.raise_for_status()  # 主动触发HTTP错误的异常
        data.append(response.json())
    except requests.exceptions.RequestException as e:
        print(f"请求URL {url} 失败: {e}")
    
  3. 最后将收集到的JSON数据保存为CSV时,可以用pd.json_normalize扁平化JSON,再保存:
    result_df = pd.json_normalize(data)
    result_df.to_csv('nft_response.csv', index=False)
    

调整后应该就能正常遍历所有有效行,拼接出正确的URL,并且顺利把API返回的JSON数据保存成CSV啦。

备注:内容来源于stack exchange,提问作者Zer0chance_

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 15:48:12