Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > Perl
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 02.08.2009, 18:49   #1
newbies
 
Регистрация: 02.08.2009
Сообщений: 3
По умолчанию нужен скрипт на PERL для обработки текстовой информации (1251 кириллица, десетки тысяч строк) PERL

Здравствуйте уважаемый ALL!

Очень нужен скрипт на PERL для обработки текстовой информации (1251 кириллица, десетки тысяч строк). Примеры текстов, что есть и что надо получить:

Есть: ADR=ЛЕНИНА УЛИЦА 31/2

Надо: ADR=ЛЕНИНА УЛИЦА, Д.31/2

или

Есть: ADR=ЛЕНИНА УЛ. 31к2

Надо: ADR=ЛЕНИНА УЛ., Д.31к2

Название улицы - набор символов произвольной длинны и кол-ва слов (может и латынь, но внутри цифр быть не может), номер дома в конце - просто десятичная цифра или набор символов, начинающийся с цифр типа 31/1 или 31к2.

Вы уж простите что с такой ерундой обращаюсь, но сам пока не программист, а отчет очень нужен. Если в рамках этого форума помощь невозможна, посоветуйте, куда обратиться или сколько это стоит.


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

Получается, в строке, начинающейся с ADR первый справа пробел - и вставить ", Д."

На PERL потому, что я там могу сам условия первого атрибута в строке (типа ADR) поменять. Тк их там несколько. Ну чтобы более-менее упростить работу Вам.
В принципе, можно на чем угодно написать главное - на выходе текстовый файл с указанными параметрами и возможность изменить первый атрибут.

Спасибо.

Последний раз редактировалось newbies; 03.08.2009 в 16:14.
newbies вне форума   Ответить с цитированием
Старый 03.08.2009, 11:26   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Предположительно тебе нужно чето-то в этом роде (Регулярные выражения - http://ru.wikipedia.org/wiki/Perl_(я...аммирования)):

Код:
 $x =~ s/УЛИЦА/УЛИЦА, Д./g;
И
Код:
 $x =~ s/УЛ. /УЛ., Д./g;
Читай про них на ссылке.
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 03.08.2009, 12:00   #3
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

да, это делается регулярными выражениями, но в общих словах задача сводится к замене последнего пробела в строке на пробел + Д.
свободен...
wall66 вне форума   Ответить с цитированием
Старый 03.08.2009, 14:35   #4
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,228
По умолчанию простая программка, решающая задачу с простеньким интерфейсом

вот.
набросал простую программку. на Delphi.
кое-какой интерфейс присутствует.
(EXE + исходники внутри архива)
Вложения
Тип файла: rar rpl_txt.rar (149.9 Кб, 19 просмотров)
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 03.08.2009, 16:32   #5
newbies
 
Регистрация: 02.08.2009
Сообщений: 3
По умолчанию

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

to Serge_Bliznykov

Спасибо, примерно то что надо. Но:

- В файле есть другие строчки, не начинающиеся с ADR и их необходимо оставить без изменения

- почему-то она берет не только цифры справа, но и буквы и другие символы

- в строке с ADR в начале, первый символ справа (те последний в строке) может быть только цифра (ни скобка, ни точка, ни буква рус/лат. ни какой другой символ)

Вроде чуток осталось

Спасибо!

Последний раз редактировалось newbies; 03.08.2009 в 16:41.
newbies вне форума   Ответить с цитированием
Старый 03.08.2009, 19:13   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,228
По умолчанию

Цитата:
- В файле есть другие строчки, не начинающиеся с ADR и их необходимо оставить без изменения
это просто.
в новой версии сделано. (см. приложение)

Цитата:
- почему-то она берет не только цифры справа, но и буквы и другие символы
??? ну, так и должно быть. все символы ДО ПЕРВОГО СПРАВА пробела считаем как номер дома,
пример Ваш же: 31к2
Или Вы что-то другое имеет в виду?!

Цитата:
- в строке с ADR в начале, первый символ справа (те последний в строке) может быть только цифра (ни скобка, ни точка, ни буква рус/лат. ни какой другой символ)
вроде бы это неважно?...

Короче. Приведите пример строчек, для которых алгоритм сработал неверно. (или приложите к сообщению небольшой кусочек из Вашего файла)

p.s. Исходник на Дельфи можете изменять самостоятельно. скачать любую версию Дельфи (можно даже портабле) и компилировать исходник...
Вложения
Тип файла: rar rpl_txt_v2.rar (144.6 Кб, 15 просмотров)
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 03.08.2009, 19:59   #7
newbies
 
Регистрация: 02.08.2009
Сообщений: 3
По умолчанию

то Serge_Bliznykov

Работает!!!!!
Всё как надо

Мегареспект! Спасибо!!!!
newbies вне форума   Ответить с цитированием
Старый 03.08.2009, 22:25   #8
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,228
По умолчанию

Рад.
Да не за что
Обращайтесь, если что...
Serge_Bliznykov вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Python vs Perl, Я выбрал Perl! Причина: а черт ее знает но наверное дело в философии и синтаксисе(TMTOWTDI ) Sna1L Perl 0 13.12.2011 14:10


04:41.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.