Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Парсер неоднородного txt файла

489
11 июля 2007 года
NeO_u
277 / / 11.10.2006
Такая ситуация, нужно написать парсер. который будет выводить информацию в следующем виде: тип1, дополнительно, тип2, телефон.
информация может поступать в разных видах, например:
тип1 дополнительно, тип2, телефон

или

дополнительно, тип1, тип2, телефон

и все подобные вариации, при чем, "тип1" и "тип2", это одно слово, без пробелов, а "дополнительно" это несколько слов разделенных пробелом, обычно где-то 5-15.

помогите пожалуйста.
92
11 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
а запятыми разделено всегда? в "дополнительно" запятых не встречается?
3
11 июля 2007 года
Green
4.8K / / 20.01.2000
ты можешь самостоятельно описать алгоритм (на русском языке) парсинга данных вариантов строк?
92
12 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
Green, ты меня спрашиваешь? :)
489
12 июля 2007 года
NeO_u
277 / / 11.10.2006
Цитата: Green
ты можешь самостоятельно описать алгоритм (на русском языке) парсинга данных вариантов строк?



могу:-)
1) читаем строку.
2) ищем в строке "тип1" - его находим из словаря, разработанного мной.
3) ищем в строке "тип2" - его находим фактически из другого словаря.
4) далее у меня возникает проблема, с поиском "дополнительно", т.е. там присутствовать может 1-2 предложения. и в них может присутствовать ".", ",", ";", ":" и т.п.
5) далее ищем телефон, тоже их может быть 1-2. их логично будет искать по сочетанию цифр, например, если у нас идет 3 цифры подряд, то это телефон.

ЗЫ: Ну это я так понимаю. Может в чем-то не прав.

489
12 июля 2007 года
NeO_u
277 / / 11.10.2006
Цитата: Тень Пса
а запятыми разделено всегда? в "дополнительно" запятых не встречается?



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

1.9K
12 июля 2007 года
Anton Chik
175 / / 26.09.2005
ну если словари типов не пересекаюца, то после нахождения типов, найти телефон(ы) "по сочетанию цифр"... а остальное пихать в "дополнительно" :) ф чем изюм??? :))))
489
12 июля 2007 года
NeO_u
277 / / 11.10.2006
Цитата: Anton Chik
ну если словари типов не пересекаюца, то после нахождения типов, найти телефон(ы) "по сочетанию цифр"... а остальное пихать в "дополнительно" :) ф чем изюм??? :))))



А если типы встречаются в середине предложения? вырезать?
Типы не повторяются. но проблема в том. что у, допустим, для типа2 у меня словарь. только списков корней слов, а не самих слов. как мне искать в предложении слово. а в последствии его корень?

8.8K
12 июля 2007 года
Se AD WMD
165 / / 10.01.2007
NeO_u , чтоб найти слово надо либо искать по возможным разделителям в начале и конце слова (пробелы, "," и другие знаки препинания), а чтоб найти в нём корень надо перебором по всему слову идти начиная с первой буквы и сравнивать (надо учесть, что слово может начинаться с большой буквы), альтернативный метод поиска (как в NTFS для поиска файлов) - не перебором, а больше меньше, начинаеш проверку с середины словаря, если меньше ,то в середину первой половины и т.д.
489
12 июля 2007 года
NeO_u
277 / / 11.10.2006
Цитата: Se AD WMD
NeO_u , чтоб найти слово надо либо искать по возможным разделителям в начале и конце слова (пробелы, "," и другие знаки препинания), а чтоб найти в нём корень надо перебором по всему слову идти начиная с первой буквы и сравнивать (надо учесть, что слово может начинаться с большой буквы), альтернативный метод поиска (как в NTFS для поиска файлов) - не перебором, а больше меньше, начинаеш проверку с середины словаря, если меньше ,то в середину первой половины и т.д.



Если так. то проще будет написать полностью словарь. т.е не из корней, а из слов, их там всего может 200-300 штук...и использовать tolower(), что бы не было проблем с большими или маленькими буквами:-)

92
12 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
блин, ну попарься ты с алгоритмом посиди. если так хорошо разбираешься в своей задаче :))))

[offtop]
вот блин на первом/втором курсе универа помню инет был дикостью потому что Dial-Up и дорого, сидели ночами кучкой по 2-3 чела и мучались. некоторые по одному.... и никаких ведь тебе форумов )))))
[/offtop]

BOOST lib запользуй в конце концов =) там RegExp'ы есть =) несколько облегчит твою задачу (парсил даты в самых разных вариациях :)))) ).

в общем могу посоветовать только ДЕРЗАТЬ и "грыСть граниД" твоей задачи :)
9.5K
13 июля 2007 года
ROLpogo
80 / / 22.08.2006
До "граниДа" пока ещё рановато, похоже тут автор с условием ещё не совсем разобрался :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог