Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 14, 2017 10:25:16

Syslik
Зарегистрирован: 2016-09-15
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Json Python

Народ, подскажите, пожалуйста, как создать массив словарей. То есть у меня есть файл лога, и я пытаюсь его распарсить таким образом:

 ['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 уже, собственно, массив из набора хостов для каждого пользователя

Отредактировано Syslik (Фев. 14, 2017 10:27:11)

Офлайн

#2 Фев. 14, 2017 10:28:03

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Json Python

['host_list':  {host': 'host', 'value': value1}]
Это в каком формате вообще? Это не json и не питон.



Отредактировано FishHook (Фев. 14, 2017 10:28:20)

Офлайн

#3 Фев. 14, 2017 10:49:08

Syslik
Зарегистрирован: 2016-09-15
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Json Python

Ну, конретно это питон. В json будут парные кавычки

Офлайн

#4 Фев. 14, 2017 10:51:15

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Json Python

Syslik
Ну, конретно это питон
Нет, это не питон. Это неверный синтаксис в питоне, эта запись не представляет собой никакого из встроенных типов.



Офлайн

#5 Фев. 14, 2017 11:10:21

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Json Python

Syslik
я поясню слова FishHook - если предоставляемые данные нельзя в таком виде взять и вставить в консоль интерпретатора - то это не корректные данные Python.
От себя добавлю - вот плохо написано стартовое сообщение. От того и никто не спешит вам помогать - потому что не ясно что у вас там за фигня творится.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#6 Фев. 14, 2017 13:25:22

Syslik
Зарегистрирован: 2016-09-15
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Json Python

Тогда я не понимаю, как яснее написать. Там же приведена конкретная строчка
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"}], ................}
Скрипт на питоне, коим пытаюсь это сделать, приведён выше. Вот и вся фигня

Офлайн

#7 Фев. 14, 2017 16:07:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Json Python

Syslik
Дорогой, да насрать всем какие именно у вас строки вашего лога как выглядят, он интересен только вам.
Дайте мне на вход строку, которую нужно распарсить и закон по которому одна строка переходит в другую. Этого достаточно для решения вашей проблемы. Какая мне нафиг разница через что вы её пропускаете? Да хоть через угольный фильтр, какая мне разница? Нужна постановка задачи, четкая, оформленная, с примерами входных и выходных данных и описанием закона по которому происходит преобразование.



Офлайн

#8 Фев. 14, 2017 16:46:02

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Json Python

 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)

Офлайн

#9 Март 1, 2017 08:57:41

Syslik
Зарегистрирован: 2016-09-15
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Json Python

PooH
Спасибо, похоже на то, что нужно!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version