Задать вопрос
@nekolov

Как верно распарсить в python данную строку?

Вечер добрый,
есть массив данных следующего формата, подскажите как верно получить доступ к его элементом посредством python.

Пробую так:
#!/usr/bin/env python
import json

j = json.loads(JSONDATA)
print (j['hashmap'][0])


{u'hashmap': [{u'hash': u'6d3f4796275bb54c21a33b82f399cc6d', u'key': u'assessment'}, {u'hash': u'601892ece72be3be2f57266ca2354792', u'key': u'bulletinFamily'}, {u'hash': u'a173072793578541ea04b7baa0323592', u'key': u'cpe'}, {u'hash': u'ab861885dbe02d09a3a2208dd9731d62', u'key': u'cvelist'}, {u'hash': u'3c236091754d2db00c1c42f811b3ada4', u'key': u'cvss'}, {u'hash': u'304c200bf4a637f269c9acaf5f79c209', u'key': u'description'}, {u'hash': u'0e53d0deb991b66bb6a7a414e375241c', u'key': u'href'}, {u'hash': u'94ef3fc1d42d02bbb210dabce65fc771', u'key': u'modified'}, {u'hash': u'104e09b5ff5b1ce3bc17f5fe64295116', ]
  • Вопрос задан
  • 278 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
JRazor
@JRazor
Senior StarkOverFlow Programmer
А что нужно то? Если я правильно понял, то тут просто нужно преобразовать данные:
j = json.loads(JSONDATA)
data = dict([(v['key'], v['hash'])for v in j['hashmap']])

В итоге key станет ключом, а hash - значением:
{
   'assessment': '6d3f4796275bb54c21a33b82f399cc6d', 
   'bulletinFamily': '601892ece72be3be2f57266ca2354792', 
   'cpe': 'a173072793578541ea04b7baa0323592', 
   'cvelist': 'ab861885dbe02d09a3a2208dd9731d62', 
   'cvss': '3c236091754d2db00c1c42f811b3ada4', 
   ...
}
Ответ написан
Невалидный json. Должен быть с двойными кавычками.
https://stackoverflow.com/questions/4162642/single...
>>> import ast
>>> s = "{'username':'dfdsfdsf'}"
>>> ast.literal_eval(s)
{'username': 'dfdsfdsf'}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы