2017-02-09 44 views
0

我对Python非常陌生,正在尝试从user.csv文件中的每个用户的URL获取响应,返回JSON消息,然后将其解析为CSV 。我不确定要在退货部分放置什么或如何拆分消息。这是当我得到的HTTP请求返回给我的信息的一个示例:使用Python发送HTTP请求并解析JSON

{"msg": {"mes": "four", "high": 1230, "low": 0}}"

这是我有这么远,但我得到了一个错误:

TypeError: expected string or buffer

import requests 
import json 
import csv 

def getRows(data): 
    return [] 

url = 'http://test_url' 

with open('user.csv', 'rU') as data_file: 
    data = csv.DictReader(data_file) 
    for row in data: 
     current_user = row['mdn'] 
     r = requests.get(url) 
     data = json.loads(data) 
     fname = "mydata.csv" 
with open(fname,'wb') as outf: 
    outcsv = csv.writer(outf) 
    outcsv.writerows(getRows(data)) 
+0

您能给出有关输入csv文件(mdn.csv)内容的更多详细信息(或者可能是示例)吗?另外,您能否详细说明“current_user”在请求中的作用?如果您只为每个用户调用r = requests.get(url),您将始终得到相同的响应 – caspillaga

+0

输入csv文件具有用户列表。每个人都会打到URL并返回一个类似于我作为示例提供的JSON消息。然后我想要接收用户,消息并解析它,并将带有JSON消息的整个列表转换为csv。 – c3win90

+0

好的,但对user1和user2的请求有什么区别?在你的代码中,每个用户的请求都是相同的,所以对它们的响应总是相同的。也许你应该以某种方式发送请求中的current_user? – caspillaga

回答

1

有了你提供的信息,你可以做这样的事情:

​​

请提供更多关于HTTP请求使用的信息和d关于您的csv的格式以获得更准确的答案

+0

谢谢! HTTP请求将根据user.csv文件中的每个用户返回信息,因此响应将有所不同。在这种情况下,你需要合并current_user是正确的。 运行您提供的内容时,出现TypeError:无法连接'str'和'int'对象。 – c3win90

+0

得到它的工作谢谢你! – c3win90