python - 在 Python 3.6 中解码来自 API 的文本响应

标签 python json python-3.x mailchimp-api-v3.0

我正在尝试从 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/

相关文章:

python - 从 RadioSelect 中删除空白 "---------"

python - 如何通过Python连接未格式化的XML文件中的行

javascript - 将 json 转换为 osc 地址和参数

java - 如何为 jsonPath 匹配器正确转换 java 对象?

Python 3 websockets - 在关闭连接之前发送消息

python - 使用 lxml 在 xml 中进行复杂搜索

python - 如何在循环中使用ndb.OR?

c# - JToken 数组到数据表 C#

python-3.x - 如果Try语句

python 3 : How to use a type defined later for Function Annotations?