#python #json
#python #json
Вопрос:
Я новичок в Python, поэтому простите меня, если это ошибка новичка. Я пытаюсь проанализировать определенные данные из вывода JSON.
Вот пример вывода:
"data": [
{
"trackedEmails": [
{
"attachments": true,
"fromEnv": {
"emailAddress": "user@test.com"
},
"fromHdr": {
"displayableName": "Joe Johnson",
"emailAddress": "user@test.com"
},
"id": "eNpFj11PwjAUhv9Lb2VJ243puGNGREIGgh",
"info": "Indexed and archived",
"received": "2020-10-23T16:19:00 0000",
"route": "outbound",
"senderIP": "10.10.10.10",
"sent": "2020-10-23T16:19:00 0000",
"status": "archived",
"subject": "FW: Sent to Alias",
"to": [
{
"displayableName": "",
"emailAddress": "external@test.com"
}
]
},
Вот как я пытаюсь проанализировать данные. Это не полный сценарий, поскольку часть информации конфиденциальна.
payload = {
'data': [
{
'start': '2020-10-23T00:00:00 0000',
'end': '2020-11-10T00:00:00 0000',
'advancedTrackAndTraceOptions': {
'from': '@example.com',
}
}
]
}
r = requests.post(url=url, headers=headers, data=str(payload))
data_r = r.json()
tracked_emails = []
for x in data_r:
tracked_emails.append([x['info'], x['senderIP']])
Каждый раз, когда я пытаюсь это сделать, я получаю «TypeError: строковые индексы должны быть целыми числами». Я просто хотел бы извлечь определенную информацию и экспортировать ее в CSV. (Эту часть я понял). Я пробовал json.dumps и json.loads без какого-либо успеха. Я также попытался добавить целое число, например: [x[‘info’][0], x[‘senderIP’]] .
Любая помощь приветствуется. Спасибо!
Комментарии:
1. Ошибка сообщает вам, что вы пытаетесь получить доступ к индексу строки, но вы используете строку в качестве индекса вместо числа. Убедитесь, что x является типом словаря, а не строкой. Возможно, вам потребуется использовать
json.loads()
данные для их преобразования.2. Итерация по dict дает вам его ключи, следовательно
x
, являясь строкой. Вы, вероятно, хотитеdata_r = r.json()['data']
.