如何访问这个复杂的字典列表元素


result={"message":"Error logging in for user sana123@gmail.com","status":"Error: [Errno 400 Client Error: Bad Request for url: https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=xxxx] {n  "error": {n    "code": 400,n    "message": "EMAIL_NOT_FOUND",n    "errors": [n      {n      
"message": "EMAIL_NOT_FOUND",n        "domain": "global",n        "reason": "invalid"n      }n    ]n  }n}n"}

用于访问"message"键,我们将使用:

result['message']

但是我如何访问:

  1. "message"EMAIL_NOT_FOUND"
  2. "reason"invalid"

result["status"]部分为Json编码消息。要解码它,首先去除Errno:部分,然后使用json.loads。例如:

import json
result = {
"message": "Error logging in for user sana123@gmail.com",
"status": 'Error: [Errno 400 Client Error: Bad Request for url: https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=xxxx] {n  "error": {n    "code": 400,n    "message": "EMAIL_NOT_FOUND",n    "errors": [n      {n      "message": "EMAIL_NOT_FOUND",n        "domain": "global",n        "reason": "invalid"n      }n    ]n  }n}n',
}
data = json.loads("{" + result["status"].split("] {", maxsplit=1)[-1])
for error in data["error"]["errors"]:
print(error["message"])
print(error["reason"])

打印:

EMAIL_NOT_FOUND
invalid

result['message']包含文本和JSON字符串,您首先需要提取JSON部分,然后解析字符串(使用本机库json)。

import json
json_string = result['status'][result['status'].find('{'):]
data = json.loads(json_string)

那么data将是下一个dict

{'error': {'code': 400,
'message': 'EMAIL_NOT_FOUND',
'errors': [{'message': 'EMAIL_NOT_FOUND',
'domain': 'global',
'reason': 'invalid'}]}}

最新更新