【发布时间】:2018-10-31 16:49:17
【问题描述】:
我有一个问题,我需要生成一个 json 有效负载以将其作为数据传递给 api,问题是我需要根据来自文件的 ID 数量生成 json 结构。 例如:如果一个人有 5 个 ID,那么我需要生成 5 行数据;如果有 4 个 ID,则为 4 行,依此类推...
这是我的数据文件的样子:
Member_ID,User_ID,Proxy_ID,A_ID,Login_ID,First_Name,Last_Name
M1000,U1000,P1000,A1000,Jim1,Jim,Kong
M2000,U2000,P2000,A2000,OlilaJ,Olila,Jayavarman
M3000,U3000,P3000,A3000,LisaKop,Lisa,Kopkingg
M4000,U4000,P4000,A4000,KishoreP,Kishore,Pindhar
M5000,U5000,P5000,A5000,Gobi123,Gobi,Nadar
数据也可以是:
Member_ID,User_ID,A_ID,Login_ID,First_Name,Last_Name
M1000,U1000,A1000,Jim1,Jim,Kong
M2000,U2000,A2000,OlilaJ,Olila,Jayavarman
M3000,U3000,A3000,LisaKop,Lisa,Kopkingg
M4000,U4000,A4000,KishoreP,Kishore,Pindhar
M5000,U5000,A5000,Gobi123,Gobi,Nadar
我无法找到一种方法来为每种此类输入文件动态生成行数。
from datetime import datetime
import json
import requests
start_time = datetime.now()
delim = "," # Just in case we switch to tsv or something
headers = {'content-type': 'application/json'}
with open('Documents/Onboarding_sample.csv', 'r') as file:
i = next(file)
listcolumns = i.split(",")
sub = "ID"
IDcolumns = [s for s in listcolumns if sub.lower() in s.lower()]
print len(IDcolumns)
for line in file:
line_list = line.split(delim)
Member_ID = line_list[0]
User_ID = line_list[1]
Proxy_ID = line_list[2]
A_ID = line_list[3]
payload = {
"IndividualInfo":
[{
"Member_ID": Member_ID,
"Identifiertype":"001",
"EType:01"
}
{
"User_ID": User_ID,
"Identifiertype":"001",
"EType:01"
}
{
"Proxy_ID": Proxy_ID,
"Identifiertype":"001",
"EType:01"
}
{
"A_ID": A_ID,
"Identifiertype":"001",
"EType:01"
}
]
}
try:
r = requests.post("http://www.google.com/blahblah", data=json.dumps(payload), timeout=(1,20), headers=headers)
r.raise_for_status()
except requests.exceptions.HTTPError as errh:
print "HTTP Error:%s" %errh
except requests.exceptions.ConnectionError as errc:
print "Error Connecting:%s" %errc
except requests.exceptions.Timeout as errt:
print "Timeout error:%s" %errt
print "This is a JSON object."
print payload
end_time = datetime.now()
print('Duration: {}'.format(end_time - start_time))
无论我在文件中获得什么 ID,有人可以告诉我如何正确且动态地执行此操作。
【问题讨论】:
-
请注意,您的数据无效,“Identifiertype:001”中的引用可能有误,还有一些逗号
-
你的payload既不是有效的python语法也不是有效的json结构。你预期的 json 输出是什么?
-
我把它改成了包含逗号,现在看起来还好吗?
-
很遗憾没有。你跑过这段代码吗?它肯定会给你一个
SyntaxError。您仍然缺少嵌套的dicts 之间的逗号,并且嵌套的dicts 中的键/值对也都搞砸了。"Identifiertype:001"应该是{"Identifiertype":"001"}吗?
标签: python python-3.x python-2.7 python-requests