因此,我从IG下载了消息传递json,并尝试将其转换为DataFrame。我只感兴趣的是一个发件人('sabinabacevich')到另一个发件人('panbacevich')的邮件内容。 JSON的外观如下:
[{'participants': ['panbacevich', 'sabinabacevich'],
'conversation':
[{'sender': 'panbacevich', 'created_at': '2018-09-
11T07:43:00.344130+00:00', 'media_owner': 'tyrone',
'media_share_caption': 'Fr lol', 'media_share_url':
'https://scontent-lax3- 1.cdninstagram.com/vp/
18f52cd945b10a7c6612ccb1644ee0a3/5C320320/t51.2885-
15/e35/40456720_1886441298071798_219870885965499684_n.jpg?
ig_cache_key=MTg2NTYxNjkxOTEyNzQ2NzY5Mg%3D%3D.2'},
{'sender':
我遍历了网上发现的大多数嵌套示例,但无法到达那里。请发送帮助
答案 0 :(得分:1)
首先,您在上面发布的所有json都不是有效的json,我通过在线验证程序(此验证器:https://jsonlint.com/)对其进行了清理,并对其进行了一些清理,使其看起来像这样:
[{"participants": ["panbacevich", "sabinabacevich"],
"conversation": [{"sender": "panbacevich",
"created_at": "2018-09-11T07:43:00.344130+00:00",
"media_owner": "tyrone",
"media_share_caption": "Fr lol",
"media_share_url": "https://scontent-lax3-1.cdninstagram.com/vp/%2018f52cd945b10a7c6612ccb1644ee0a3/5C320320/t51.2885-%2015/e35/40456720_1886441298071798_219870885965499684_n.jpg?%20ig_cache_key=MTg2NTYxNjkxOTEyNzQ2NzY5Mg%3D%3D.2"
}]
}]
请注意,我已删除“发件人”字段。
从那里开始,使用json包将其加载到数据帧中相对简单:
import json
import pandas as pd
file = [{"participants": ["panbacevich", "sabinabacevich"],
"conversation": [{"sender": "panbacevich",
"created_at": "2018-09-11T07:43:00.344130+00:00",
"media_owner": "tyrone",
"media_share_caption": "Fr lol",
"media_share_url": "https://scontent-lax3-1.cdninstagram.com/vp/%2018f52cd945b10a7c6612ccb1644ee0a3/5C320320/t51.2885-%2015/e35/40456720_1886441298071798_219870885965499684_n.jpg?%20ig_cache_key=MTg2NTYxNjkxOTEyNzQ2NzY5Mg%3D%3D.2"
}]
}]
data = json.dumps(file)
df = pd.read_json(data)
df.conversation.values
可以从那里访问“会话”列,然后您想要的字典在列表内的列表中。可以通过以下方式将其分解:
dict_you_want = df.conversation.values[0][0]
从那里您可以像从常规词典中一样访问任何内容:
print(dict_you_want['media_share_caption'])
"Fr lol"
请注意,如果数据框长于1行,则还必须选择要访问的行。
希望有帮助!