Найти - Пользователи
Полная версия: Json Python
Начало » Python для новичков » Json Python
1
Syslik
Народ, подскажите, пожалуйста, как создать массив словарей. То есть у меня есть файл лога, и я пытаюсь его распарсить таким образом:
 ['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=host1/15+host1/7+host1/6+host1/5
Разбиваю
 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}]
где data уже, собственно, массив из набора хостов для каждого пользователя
FishHook
['host_list':  {host': 'host', 'value': value1}]
Это в каком формате вообще? Это не json и не питон.
Syslik
Ну, конретно это питон. В json будут парные кавычки
FishHook
Syslik
Ну, конретно это питон
Нет, это не питон. Это неверный синтаксис в питоне, эта запись не представляет собой никакого из встроенных типов.
JOHN_16
Syslik
я поясню слова FishHook - если предоставляемые данные нельзя в таком виде взять и вставить в консоль интерпретатора - то это не корректные данные Python.
От себя добавлю - вот плохо написано стартовое сообщение. От того и никто не спешит вам помогать - потому что не ясно что у вас там за фигня творится.
Syslik
Тогда я не понимаю, как яснее написать. Там же приведена конкретная строчка
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"}], ................}
Скрипт на питоне, коим пытаюсь это сделать, приведён выше. Вот и вся фигня
FishHook
Syslik
Дорогой, да насрать всем какие именно у вас строки вашего лога как выглядят, он интересен только вам.
Дайте мне на вход строку, которую нужно распарсить и закон по которому одна строка переходит в другую. Этого достаточно для решения вашей проблемы. Какая мне нафиг разница через что вы её пропускаете? Да хоть через угольный фильтр, какая мне разница? Нужна постановка задачи, четкая, оформленная, с примерами входных и выходных данных и описанием закона по которому происходит преобразование.
PooH
 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]}
Так? Чтение мыслей получилось?
Syslik
PooH
Спасибо, похоже на то, что нужно!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB