Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 8, 2008 14:09:00

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер текста

попробовал http://construct.wikispaces.com/ - в 4 раза медленнее регулярок.



Офлайн

#2 Авг. 8, 2008 16:15:34

asv13
От:
Зарегистрирован: 2007-01-22
Сообщения: 130
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер текста

shiza
mxTextTools - все никак не найду как подступиться - ужасные конуструкции, но видимо придется. %)
Из документации я нашел только официальную доку и еще мануал по прасингу от Гвидо. Есть еще что-нибудь?
да головоломка для меня до сих пор и регулярно забываю что там откуда. Как поменять что-то надо так ступор и читаю официальные доки снова и отладку делаю с выводом всего что хватает оператор на экран. Напоминает ассемблер - одни условия и переходы.
Есть к это либе еще якобы облегчающая процесс либа-надстройка которая пишется с регулярками, но я её не пробовал.

Действительно тоже хочу найти гибкий и удобный парсер текста.



Отредактировано (Авг. 8, 2008 16:30:54)

Офлайн

#3 Авг. 8, 2008 16:32:29

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Парсер текста

Гибче и удобнее регулярок? Слабо себе представляю.
На базе регулярок можно быстро написать парсер любой степени гибкости и удобства.
Но скорость - как получится.

Офлайн

#4 Авг. 8, 2008 17:12:31

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер текста

asv13
есть обертка к mxTextTools
называется simpleparse
( http://simpleparse.sourceforge.net/ )

В нем все описывается в стнадарте EBNF. Он проще гораздо, но тоже незнакомый. И тоже нет доки на русском.



Офлайн

#5 Авг. 8, 2008 17:36:29

asv13
От:
Зарегистрирован: 2007-01-22
Сообщения: 130
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер текста

про simpleparse я помню, мне он показался даже сложнее :)

здесь http://nedbatchelder.com/text/python-parsers.html дано перечисление парсеров с краткой аннотацией и моему mxTextTools досталось - “An unusual table-based parser. There is no generation step, the parser is hand-coded using primitives provided by the package.”

пока буду смотреть в сторону PLY, pyparsing и ANTLR



Офлайн

#6 Авг. 8, 2008 17:50:04

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер текста

pyparsing пробовал. В чистом виде тормознее регулярок раз в 5.
Эту страчнику видел… но парсеров там…. пробовать неперепробовать.
Как говорит ZAN - большую скорсоть дают детерменированные конечные автоматы, т.е. DFA.



Отредактировано (Авг. 8, 2008 17:54:32)

Офлайн

#7 Авг. 8, 2008 21:40:04

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер текста

Разобрался с simpleparse (надстройка над mxTextTools).
Синтакиси даже проще, чем у регулярок.
Скорость примерно равна им.

asv13 Могу рекомендовать, если тебя скорость mxTextTools устраивает. Лично мне - маловато. =)



Отредактировано (Авг. 8, 2008 21:42:41)

Офлайн

#8 Авг. 8, 2008 22:39:21

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Парсер текста

А может просто железку помощнее и писать на том что нравится и удобно?:)



Офлайн

#9 Авг. 8, 2008 22:50:15

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер текста

Если ничего не найдется, то придется так поступить.

Но все дело в том (см. самый верхний пост), что у меня на чистом питоне получался прасер по крайней мере в 40 раз быстрее регулярок. Но он сильно неуниверсальный - чтоб чего-нибудь поменять, надо много всего переписывать.
Поэтому, у меня пока есть надежда, что наверняка есть модуль на С например, с более удобным интерфейсом и сходной скоростью.



Офлайн

#10 Авг. 8, 2008 23:12:45

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Парсер текста

а если генератор кода написать? по решение в первом посте?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version