Автор Тема: "выдирание" текста из файла  (Прочитано 7986 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DamonLSD

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 53
  • +0/-0
  • 0
    • Просмотр профиля
"выдирание" текста из файла
« : 22 Мая 2003, 15:52:43 »
Привет, всезнающий All!
Возникла необходимость выбрать из одного файла некоторые строки и сохранить их в другом. С "выдиранием", например, заголовков новостей тут нет проблемм - это я умею ;) а вот вырезать диапазон строк, тут у меня фантазии не хватило.
Задача такова: необходимо выбрать кусок из файла со строки, в которой встречается слово "ХХХ" и до строки в которой есть .
Смысл собственно вот в чем: есть ТВ-программа на всю неделю, в которой много каналов. Мне нужно выбрать, например, ОРТ на всю неделю и сохранить в отдельном файле.
Ну вот и все. Кажися объяснил суть дела.
Спасибо.
Good Luck,
   Damon LSD.

Оффлайн DamonLSD

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 53
  • +0/-0
  • 0
    • Просмотр профиля
"выдирание" текста из файла
« Ответ #1 : 22 Мая 2003, 15:54:54 »
Да, кстати, могу скинуть html\'ку с этой ТВ-программой
Good Luck,
   Damon LSD.

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
"выдирание" текста из файла
« Ответ #2 : 22 Мая 2003, 16:01:02 »
Самое простое...

foreach (@text) {
  if (m/XXX/) {$i = "1";}
  if (m/<\\/td>/) {$i = "0";}
  if ($i eq "1") {@sometext = (@sometext, $_);}
}

P.S. исправил...
« Последнее редактирование: 22 Мая 2003, 18:01:35 от Phoinix »

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
"выдирание" текста из файла
« Ответ #3 : 22 Мая 2003, 16:32:53 »
Цитировать
Phoinix:
if ($i eq 1) {@sometext = (@sometext, $_;}

Что это? Если даете ответ то потрудитесь его проверить.
Особенно "$i eq 1"... Операторы сравнения повторите...
The documentations is your friend

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
"выдирание" текста из файла
« Ответ #4 : 22 Мая 2003, 17:03:38 »
DamonLSD
Начни с
$text =~ m/XXX(.*?)<\\/td>/i;
my $new_tex = $1;
а далее perldoc perlre; или поиск по этому форуму.
The documentations is your friend

Оффлайн DamonLSD

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 53
  • +0/-0
  • 0
    • Просмотр профиля
"выдирание" текста из файла
« Ответ #5 : 22 Мая 2003, 17:32:25 »
Спасибо большое за наставления!
Буду копать дальше
Good Luck,
   Damon LSD.

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
"выдирание" текста из файла
« Ответ #6 : 22 Мая 2003, 17:55:39 »
NeoNox
Упс.. сорри не заметил... в следующий раз буду аккуратней...

P.S. но смысл, то вообщем понятен...

Оффлайн Glader

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
    • http://glader.ru
"выдирание" текста из файла
« Ответ #7 : 26 Мая 2003, 10:02:00 »
Цитировать
NeoNox:
Начни с
$text =~ m/XXX(.*?)<\\/td>/i;
my $new_tex = $1;
а далее perldoc perlre; или поиск по этому форуму.

А там не нужно ли сделать
m/XXX((.|\\n)*?)<\\/td>/i;  ?
он что-то говорил про многострочность...

Оффлайн Alone

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 182
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
"выдирание" текста из файла
« Ответ #8 : 26 Мая 2003, 11:32:19 »
Цитировать
Glader:
А там не нужно ли сделать
m/XXX((.|\\n)*?)<\\/td>/i; ?
он что-то говорил про многострочность...

проще так наверно
$text =~ m/XXX(.*?)<\\/td>/is;

Оффлайн Glader

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
    • http://glader.ru
"выдирание" текста из файла
« Ответ #9 : 26 Мая 2003, 12:53:34 »
TIMTOWTDI  :)

Оффлайн Alone

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 182
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
"выдирание" текста из файла
« Ответ #10 : 26 Мая 2003, 13:21:18 »
Цитировать
Glader:
TIMTOWTDI

:confused:

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
"выдирание" текста из файла
« Ответ #11 : 26 Мая 2003, 20:32:34 »
while () { print if (/XXX/../<\\/td>/); }

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
"выдирание" текста из файла
« Ответ #12 : 27 Мая 2003, 10:56:39 »
Alone There Is More Than One Way To Do It
The documentations is your friend

Оффлайн Glader

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
    • http://glader.ru
"выдирание" текста из файла
« Ответ #13 : 03 Июня 2003, 09:49:19 »
Цитировать
while ( ) { print if (/XXX/../<\\/td>/); }


Ух ты, а это что значит?

такое

for (qw(asd123asz as1d987asd asd5436533asz);) {
      print $_."\\n" if (/asd/../asz/);
}

не сработало

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
"выдирание" текста из файла
« Ответ #14 : 03 Июня 2003, 14:03:52 »
perldoc perlop
и там - Range operators
[ основной браузер когда-то был, теперь попробуй разберись =]

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28