Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 24, 2015 02:49:25

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9991
Репутация: +  857  -
Профиль   Отправить e-mail  

Генерация списка словарей из текстового файла

Shaman
Не могу понять к чему этот спор?
Ты втащил в регулярку работу с мусором, который может быть очищен ещё до поиска. Если он будет очищен, то ты будешь либо менять регулярку, либо изображать, что она хорошая, потому что поля находит.

Так в коде появляются стены с пристроенными к ним лесенками.

Iskatel
Конечные автоматы гораздо быстрее и надежнее
Если бы это не был какой-то сферический текст, то это, конечно, можно было бы через конечный автомат разобрать.
Но вдруг ему понадобиться брать одно поле с нескольких строк? И что, ты будешь его стирать и писать заново?

Да и как-то он у тебя построен подозрительно. Сначала надо диаграмму построить, а потом по ней код писать.
А так у тебя получилось, что на каждой строке в состоянии -1 он проверяет, не находится ли он в состоянии 0, потом 1, потом 2 - лишние проверки.

Iskatel
Но я всеже за автоматы - проще навтыкать проверок для валидации данных и т.п.
Ога, только каждый раз надо по диаграмме всё проверять, чтобы какую-нибудь логическую ошибку не допустить, которую сразу и не видно.

Iskatel
что больше всего времени жрет zip (в два раза больше чем регексп)
У тебя, случаем, не второй питон? Только во втором питоне zip() возвращает список, почему его благополучно и удалили вообще из питона, взяв izip() из itertools.


metotron
Но передо мной встала еще одна задача
Не мешай в кучу, сделай отдельный топик.



Отредактировано py.user.next (Авг. 24, 2015 10:24:29)

Офлайн

#2 Авг. 24, 2015 09:15:31

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

Генерация списка словарей из текстового файла

py.user.next
А так у тебя получилось, что на каждой строке в состоянии -1 он проверяет, не находится ли он в состоянии 0, потом 1, потом 2 - лишние проверки.

Вобщем да, классически это делается на switch, но его в питоне нет…

py.user.next
У тебя, случаем, не второй питон?
да, второй

Офлайн

#3 Авг. 24, 2015 10:27:50

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9991
Репутация: +  857  -
Профиль   Отправить e-mail  

Генерация списка словарей из текстового файла

Iskatel
Вобщем да, классически это делается на switch, но его в питоне нет…
Ахаха, не в этом дело. Представим, что между нужными блоками миллион ненужных строк. Вот на каждой строке будет попытка входа в каждую из ветвей. А всё почему? Потому что ты не нарисовал узел для -1 и не посмотрел, как это всё выглядит.



Отредактировано py.user.next (Авг. 24, 2015 10:28:27)

Офлайн

#4 Авг. 24, 2015 10:44:00

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

Генерация списка словарей из текстового файла

py.user.next
Ахаха, не в этом дело. Представим, что между нужными блоками миллион ненужных строк. Вот на каждой строке будет попытка входа в каждую из ветвей. А всё почему? Потому что ты не нарисовал узел для -1 и не посмотрел, как это всё выглядит.
Такое ощущение что тут форум фантазеров… Shaman “разные случаи” предусмотреть хочет, Вы вот представляете сферического коня между строками.

Я писал пример, основываясь на конкретных данных, предоставленых ТС. Ведь только ТС известно что там и зачем, если он не упомянул - значит этого нет! (По крайней мере нет в условиях данной на этот момент задачи) Зачем фантазировать то? Искуственный интелект изобретать…

И да, пример не оптимальный, в пользу читабельности. Я ведь не модуль на гитхаб выкладываю, и даже не “код для копипаста”.

И про оптимальность - это фантазия такая, что код будет крутиться на сервере гугла, перемалывая терабайты логов? Вернемся к реальности - а именно к примеру данных. Блоки идут раз в 4 секунды, т.е. в сутки их 21600. такое кол-во обрабатывается за 0.15-0.17 секунды что моим примером что регекспами. Отсюда вопрос: нафига козе баян?

Отредактировано Iskatel (Авг. 24, 2015 10:44:19)

Офлайн

#5 Авг. 24, 2015 10:56:36

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Генерация списка словарей из текстового файла

py.user.next
Ты втащил в регулярку работу с мусором, который может быть очищен ещё до поиска. Если он будет очищен, то ты будешь либо менять регулярку, либо изображать, что она хорошая, потому что поля находит.
Очищен один раз код генерации, или очищается каждый раз блок данных? А то и распарсить можно “другой хорошей” утилитой, так может нам всем тут и писать ничего не нужно?

Офлайн

#6 Авг. 24, 2015 10:58:28

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Генерация списка словарей из текстового файла

Iskatel
И про оптимальность - это фантазия такая, что код будет крутиться на сервере гугла, перемалывая терабайты логов? Вернемся к реальности - а именно к примеру данных. Блоки идут раз в 4 секунды, т.е. в сутки их 21600. такое кол-во обрабатывается за 0.15-0.17 секунды что моим примером что регекспами. Отсюда вопрос: нафига козе баян?
Ааа, вы тоже это заметили!?

Офлайн

#7 Авг. 24, 2015 11:01:47

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9991
Репутация: +  857  -
Профиль   Отправить e-mail  

Генерация списка словарей из текстового файла

Iskatel
Такое ощущение что тут форум фантазеров… Shaman “разные случаи” предусмотреть хочет, Вы вот представляете сферического коня между строками.
Не, Shaman пытается нащупать, как будет правильно ;) Он просто не знает и поэтому проверяет.

А вот на счёт строк, то нигде автор не говорил, что между ними не может быть чего-то длинного.
Вот те картинка (в Umbrello нарисовал), вот и подумай, как сделать так, чтобы лишних проверок не было.



Прикреплённый файлы:
attachment fields.png (29,3 KБ)

Офлайн

#8 Авг. 24, 2015 11:02:50

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Генерация списка словарей из текстового файла

py.user.next
Ахаха, не в этом дело. Представим, что между нужными блоками миллион ненужных строк.
Это мусорные строки и они могут быть очищены заранее.

Офлайн

#9 Авг. 24, 2015 11:04:01

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

Генерация списка словарей из текстового файла

py.user.next
А вот на счёт строк, то нигде автор не говорил, что между ними не может быть чего-то длинного.

Так же, как не говорил что может быть чтото длинное Ох уж эти фантазеры…

Офлайн

#10 Авг. 24, 2015 11:17:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9991
Репутация: +  857  -
Профиль   Отправить e-mail  

Генерация списка словарей из текстового файла

Iskatel
Так же, как не говорил что может быть чтото длинное
Откуда следует, что между блоками ничего нет?
metotron
количество линий под датой всегда одинаково
Вот его условие.

Shaman
Это мусорные строки и они могут быть очищены заранее.
Дата тоже может быть удалена заранее. ;)
Миллион строк лучше за один проход обработать вот таким конечным автоматом.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version