我需要这个需求:
- 导入多个csv文件
- 把它们列在一个列表里
- 将从csv文件中获取的数据插入到json中
- 在API上发送post请求
我用Python开发了以下脚本:
import requests
from requests.auth import HTTPBasicAuth
import csv
with open("p.csv", 'r') as P:
csvreader1 = csv.reader(P)
pe = list(csvreader1)
with open("c.csv", 'r') as c:
csvreader2 = csv.reader(c)
cS = list(csvreader2)
for i in range(5):
headers = {
'accept': '*/*',
'Content-Type': 'application/json',
}
json_data = {
"c": cS[i],
"pe": pe[i],
"markers": [
{
"name": "Sasa",
"data": "2017-08-15",
"perc": "80.95",
"data": "2017-08-15"
}
]
}
print(json_data)
basic = HTTPBasicAuth('user', 'pwd')
response = requests.post(
'url',
auth=basic,
headers=headers,
json=json_data,
)
但问题是,插入到json中的数据被插入为['pluto'],然后做了一些研究,我发现了replace方法,但返回以下错误:
属性错误:“list”对象没有属性“replace”
这个怎么办?我怎么能输入列表数据没有“[”和“]”我已经试过了:
pe = str(pe)
pe=pe.replace("[","")
pe=pe.replace("]","")
还有:
pe = [w.strip().split(']', '') for w in pe]
csv文件的组成如下:
YYYYY
BBBBB
EBBBB
RFFFF
DGGGG
FFFFF
...
1条答案
按热度按时间umuewwlo1#
您的值被打印为
['pluto']
,因为它们是列表,并且列表的字符串 * 表示 * 包含括号。列表的元素是字符串,它们的表示形式包括引号。您将值视为字符串,但只有当您
print()
它们时,它们才成为字符串。它们是列表,因为CSV通常每行可以有多个值。例如,如果您有一个CSV包含:
每一行都将被读取为一个字符串列表:
当你写
pe = list(csvreader1)
时,你创建了一个包含所有这些的新列表:这意味着
pe[idx]
是一个列表。在您的特定情况下,CSV只有一列,因此:
将其展平的“传统”方法是:
列表解析是编写相同代码的一种更短的方法: