#python #list #dictionary
Вопрос:
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"}
для доступа к значению ключа «сообщение» мы будем использовать :
result['message']
Но как мне получить доступ :
- «сообщение»: «EMAIL_NOT_FOUND»
- «причина»: «недействительно»
Ответ №1:
Часть 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
Ответ №2:
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'}]}}