我正在尝试从 mailchimp 导出 api 中提取数据,该 api 根据以下规范返回响应:
Returns:
参数-文本
描述: JSON 对象的纯文本转储。第一行是标题行。返回的每个附加行都是一个单独的 JSON 对象。行使用换行符 (\n) 标记进行分隔,因此实现可以一次读取一行,处理它,然后继续。
获取我正在使用的数据:
response = requests.get(urldetails).text
如果我使用 .json() ,则会出现 JSON 解码错误。上面的输出大致如下:
{数据..} {数据...}
我不确定每个字典是否都在单独的行上,但是我的印象是它实际上只是一个连续的字符串,因为我尝试对其进行解码的许多尝试都以错误“str”对象不能...等结束。 。当我使用 .text 方法时,我在任何地方都看不到“\n”分隔符。
最好的方法是什么,使每个字典成为列表中的单独项目或数据帧中的一行(我可以稍后解压)。
谢谢
最佳答案
您可以使用简单的方法从 MailChimp 导出 api
获取所有数据。请注意,我使用的是 f-strings
,仅在 Python 3.6+ 中可用。
import requests
import json
apikey = '<your-api-key>'
id = "<list-id>"
URL = f"https://us10.api.mailchimp.com/export/1.0/campaignSubscriberActivity/?apikey={apikey}&id={id}"
json_data = [json.loads(s) for s in requests.get(URL).text.strip().split("\n")]
print(json_data[0]['<some-subscriber-email>'][0]['action'])
关于python - 在 Python 3.6 中解码来自 API 的文本响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49772489/