![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
DESert |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 6.12.2005 Где: Москва Репутация: нет Всего: 1 |
Доброе всем время суток!
Есть у меня такая задача, которую удалось при помощи долгих усилий осуществить на Си++. Добрые люди подсказали, что Perl с таким в одну строчку справится. Вчера начал изучение этого замечательного языка и понял, что действительно можно. Такая проблема: есть текстовые файл, кусок из него: абдоминальный 8 п 1*а abdominal абдуктор 4 м 1а abductor абдукторный 4 п 1*а абдукция 4 ж 7а abduction абелит 5 м 1а аберрационный 9 п 1*а аберрация 6 ж 7а aberration comaII абзац 4 м 5а indent indentation indention paragraph rubric rubricate абзацный 4 п 1*а- абиетин 6 м 1а нужно все слова из него переместить в другой файл при этом отредактировав каждую строчку, таким образом, чтобы в итоге каждая строка была вида: словопробелчислопробелсловопробелчисло т.е. требуется убрать из строки перевод русского на анг и всевозможные посторонние символы после второго числа С регулярными выражениями я уже знаком, но не на таком уровне, чтобы с таким справится.... поэтому прошу вас ![]() Помогите пожалуйста! --------------------
Трудись, и будешь счастлив ты! |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
# perl -lne '@a = split "\\s+"; $a[3] =~ s|\D+||g; print join " ",@a[0,1,2,3];' test.in
абдоминальный 8 п 1 абдуктор 4 м 1 абдукторный 4 п 1 абдукция 4 ж 7 абелит 5 м 1 аберрационный 9 п 1 аберрация 6 ж 7 абзац 4 м 5 абзацный 4 п 1 абиетин 6 м 1 # |
|||
|
||||
DESert |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 6.12.2005 Где: Москва Репутация: нет Всего: 1 |
ого
![]() заранее извининяюсь за глупые вопросы и замечания... - но ведь здесь нет открытия файла из которого производится считывания, как я думаю что нет ![]() - что будет если изначально будет последовательность словопробелслово а дальше символы, которые надо убрать? я знаю, что не первый кто просит всё ему тут разжевать, но заранее спасибо большое! ![]() --------------------
Трудись, и будешь счастлив ты! |
|||
|
||||
korob2001 |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Ну если с открытиями файлов, то в одну строку наверное не получится. ;))))
Ну для этого нужна особая проверка, а это ещё строка кода. ;((((
Этот код открывает файл, читает его построчно, разбивает его по пробелам и разделяет первые четыре элемента на два массива, слова и цифры ( последовательность не важна, главное, что бы в первых четырёх елементах строки были 2 слова и 2 цифры, как они будут расположены не имеет значения ). Слова в которых есть хоть одна цифра, будут восприняты как цифра, не цифровые символы будут отброшены. Вот так выглядит файла before.txt
Обрати внимание, что первые четыре элемента строки могут быть расположены и так: слово слово число число число число слово слово слово число число слово число слово слово число число слово число слово слово число слово число После запуска программа создаст файл after.txt и он выглядит так:
ЗЫ: не знаю на сколько правильно я понял задачу, если что-то не так, то выложи код на C++, если он работает так как тебе нужно, то гораздо быстрее будет переписать его на Perl, чем гадать условия задачи. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||||||||
|
|||||||||||
Kannabismus |
|
||||
Тим Тоуди Профиль Группа: Участник Сообщений: 45 Регистрация: 20.11.2005 Репутация: 1 Всего: 2 |
А test.in что по-вашему? |
||||
|
|||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
# perl -pnale '$_ = join " ",@F[0,1]' test.in
абдоминальный 8 абдуктор 4 абдукторный 4 абдукция 4 абелит 5 аберрационный 9 аберрация 6 абзац 4 абзацный 4 абиетин 6 # |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |