Форум сайта python.su
0
Народ, подскажите, пожалуйста, как создать массив словарей. То есть у меня есть файл лога, и я пытаюсь его распарсить таким образом:
['host_list': {host': 'host', 'value': value1} {host': 'host', 'value': value2} {host': 'host', 'value': value3}.......]
['host_list': {host': 'host', 'value': value1}] ['host_list': {host': 'host', 'value': value2}] ['host_list': {host': 'host', 'value': value3}]
hosts{} for j in data['hosts'].split('+'): host,value = j.split('/') data['host'] = host data['value'] = int(value) hosts['job_list'] = [{'host': host, 'value': value}]
Отредактировано Syslik (Фев. 14, 2017 10:27:11)
Офлайн
568
['host_list': {host': 'host', 'value': value1}]Отредактировано FishHook (Фев. 14, 2017 10:28:20)
Офлайн
0
Ну, конретно это питон. В json будут парные кавычки
Офлайн
568
SyslikНет, это не питон. Это неверный синтаксис в питоне, эта запись не представляет собой никакого из встроенных типов.
Ну, конретно это питон
Офлайн
221
Syslik
я поясню слова FishHook - если предоставляемые данные нельзя в таком виде взять и вставить в консоль интерпретатора - то это не корректные данные Python.
От себя добавлю - вот плохо написано стартовое сообщение. От того и никто не спешит вам помогать - потому что не ясно что у вас там за фигня творится.
Офлайн
0
Тогда я не понимаю, как яснее написать. Там же приведена конкретная строчка
hosts=host1/15+host1/7+host1/6+host1/5
Ежели я её пропускаю через print json.dumps она выглядит так
{......................., "job_list": [{"host": "host1", "value": "15"}], ................}
{......................., "job_list": [{"host": "host1", "value": "15"} {"host": "host1", "value": "7"} {"host": "host1", "value": "6"}], ................}
Офлайн
568
Syslik
Дорогой, да насрать всем какие именно у вас строки вашего лога как выглядят, он интересен только вам.
Дайте мне на вход строку, которую нужно распарсить и закон по которому одна строка переходит в другую. Этого достаточно для решения вашей проблемы. Какая мне нафиг разница через что вы её пропускаете? Да хоть через угольный фильтр, какая мне разница? Нужна постановка задачи, четкая, оформленная, с примерами входных и выходных данных и описанием закона по которому происходит преобразование.
Офлайн
72
chunks = (x for x in data['hosts'][6:].split('+')) pairs = (x.split('/') for x in chunks) hosts = {'job_list': [dict(host=x[0], value=int(x[1])) for x in pairs]}
Отредактировано PooH (Фев. 14, 2017 16:46:15)
Офлайн
0
PooHСпасибо, похоже на то, что нужно!
Офлайн