Как вы выбираете все строки между определенными подстроками в Python и создаете CSV из результатов? - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь проанализировать результаты вызова API в python.

{'data': [{'type': 'infra_process_running', 'name': 'Custom Plugin Alert - Stopped Running', 'enabled': True, 'filter': {'and': [{'is': {'entityName': 'SOMEHOSTNAME','SOMEHOSTNAME'}}]}, 'id': 123456, 'created_at_epoch_millis': 1513024072143, 'updated_at_epoch_millis': 1513024072176, 'policy_id': 127350, 'comparison': 'below', 'critical_threshold': {'value': 2, 'duration_minutes': 5}, 'process_filter': {'and': [{'is': {'commandLine': 'java'}}]}}], 'meta': {'limit': 50, 'offset': 0, 'total': 1}, 'links': {}}

РЕДАКТИРОВАТЬ: Извините, забыл сказать, что это вывод от запуска print по запросу в python, поэтому он заключен в одинарные кавычки, а не в двойные, как JSON

Я хотел бы извлечь все 'name' и все 'entityName' из этого запроса. Я пытался использовать регулярные выражения для поиска и сохранения их в списке

list.append(re.search(r"', 'name': '(.*?)', '", stringInfJSON))
list.append(re.search(r"{'entityName': ['(.*?)']", stringInfJSON))

Я бы хотел извлечь все 'name' и все 'entityName' из этого запроса.

Затем я хотел бы вставить все эти таблицы в таблицу Excel в следующем формате

+---------------------------------------+---------------------+
| Somehostname(s)                       | Somehostname2       |
+---------------------------------------+---------------------+
| Custom Plugin Alert - Stopped Running | Blah Blah Blah Blah |
+---------------------------------------+---------------------+

1 Ответ

0 голосов
/ 29 июня 2018

Если вы получаете ответ API в формате JSON, вы должны использовать

my_dict = json.load([JSON variable])
for x in my_dict['data']:
     list.append(x['name'])

первая строка преобразует JSON в кодировку Python, а затем вам необходимо выполнить цикл по нему, поскольку JSON содержит массив, каждый элемент которого предположительно имеет значение name. Вам нужно будет import json в файле python.

Я не рекомендую вам использовать регулярные выражения для этого; нет смысла преобразовывать ответ JSON в строку.

Чтобы получить имя сущности, вы можете использовать тот же метод:

for x in my_dict['data']:
      for y in x['filter']['and']:
             list.append(y['is']['entityName']
...