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

Python多CSV导入转JSON发POST请求:列表格式问题求助

解决CSV数据插入JSON时的列表格式问题

问题根源

用csv.reader读取每行仅含单个字符串的CSV时,它会把每一行解析成一个单元素列表(比如['YYYYY']),所以pe[i]和cS[i]本质是列表,直接放到JSON里就会出现['pluto']这种格式。你之前尝试的replace方法报错,是因为列表对象没有replace属性;而把整个列表转成字符串的操作,会把整个数据集变成一个大字符串,完全不符合需求。

解决方案

有两种简单的处理方式,选一种即可:

方式1:读取CSV时直接提取单元素(推荐)

在读取CSV的阶段,就把每行的唯一元素取出来,生成纯字符串列表,避免后续额外处理:

import requests
from requests.auth import HTTPBasicAuth
import csv

# 读取p.csv,直接提取每行第一个元素
with open("p.csv", 'r') as P:
    csvreader1 = csv.reader(P)
    pe = [row[0] for row in csvreader1]

# 读取c.csv同理
with open("c.csv", 'r') as c:
    csvreader2 = csv.reader(c)
    cS = [row[0] for row in csvreader2]

for i in range(5):
    headers = {
        'accept': '*/*',
        'Content-Type': 'application/json',
    }

    json_data = {
        "c": cS[i],  # 现在是纯字符串,不再是列表格式
        "pe": pe[i],
        "markers": [
            {
                "name": "Sasa",
                "date": "2017-08-15",  # 注意原代码重复了"data"键,这里修正避免数据覆盖
                "perc": "80.95"
            }
        ]
    }
    print(json_data)
    basic = HTTPBasicAuth('user', 'pwd')

    response = requests.post(
        'url',
        auth=basic,
        headers=headers,
        json=json_data,
    )

方式2:使用时提取列表的第一个元素

如果不想修改读取逻辑,在构建JSON的时候直接取列表的第一个元素即可:

# 原读取逻辑保持不变,仅修改json_data部分
json_data = {
    "c": cS[i][0],  # 直接取列表的第一个元素转为字符串
    "pe": pe[i][0],
    "markers": [
        {
            "name": "Sasa",
            "date": "2017-08-15",
            "perc": "80.95"
        }
    ]
}

额外提示

你原代码里的markers字典存在两个相同的data键,这会导致后面的键值对覆盖前面的,建议修改其中一个键名(比如改成date),避免数据丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:43:21