Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Помогите доделать парсер / 7 сообщений из 7, страница 1 из 1
02.08.2005, 14:46
    #33196743
fl00
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Помогите доделать парсер
Подскажите как доделать. Нужно из файла выбрать только результаты теннисных событий. Т.е. нужно выбрать все, что идет после назватия Теннис. Турнир АТР. ... . ... .

То, что я написал выводи только первую строчку после заголовка. А как вывести все строки до следующего заголовка?? Пример файла внизу...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
#!/usr/bin/perl

open (FI,"</home/sa/results.txt") || die "Can't open!";
open (FO,">/home/sa/out.txt");

flock FI, 2 ;
undef $/;
$line = <FI>;
while($line =~ m!(\Tennis. Turnir ATP.+?)\n(.+?)\n!gc)
{   
   my $name = $ 2 ;
   print "$name\n";
 } 


close FI;
close FO;   

Пример файла:
Код: plaintext
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.
29.
30.
31.
32.
  Bejsbol. MLB
Baltimor             CHikago Uajt Soks      3 : 6 
Atlanta              Pittsburg             1 : 4 
Ran v pervom inninge: net
Kol-vo oshibok:  3 
Pervyj ran: Pittsburg
Poslednij ran: Pittsburg

Minnesota            Oklend                1 : 2 
Sent-Luis            Florida               5 : 6 
Ran v pervom inninge: da
Kol-vo oshibok:  1 
Pervyj ran: Sent-Luis
Poslednij ran: Sent-Luis

   Tennis. Turnir ATP. Belu Orizonti. Hard
Kapdeville           Gonsales P            2 : 1  ( 6 : 2 ,  2 : 6 ,  6 : 4 )

   Tennis. Turnir ATP. Vankuver. Hard
Gukson              Vajner                0 : 2  ( 6 : 7 ,  3 : 6 )
Vahali               Bakkanello            0 : 2  ( 1 : 6 ,  5 : 7 )

   Tennis. Turnir ATP. Vashington. Hard
Lapenti Dzh           Mahut                 2 : 0  ( 6 : 2 ,  6 : 3 )
Fau                  Popp                  1 : 2  ( 6 : 7 ,  6 : 2 ,  3 : 6 )
Arturs               Simmonds              2 : 1  ( 0 : 6 ,  6 : 3 ,  6 : 1 )
Mudi                 Smit                  2 : 0  ( 6 : 4 ,  7 : 6 )
Goldstejn            Falla                 2 : 0  ( 6 : 3 ,  6 : 2 )
Karlsen K            Karlovich              1 : 2  ( 3 : 6 ,  7 : 6 ,  3 : 6 )
Gernyh               Delgado Dzh           2 : 0  ( 6 : 4 ,  6 : 3 )
Bl`ejk Dzh             Lisnard               2 : 0  ( 6 : 4 ,  6 : 3 )
Borkman             Morrison              2 : 0  ( 6 : 3 ,  6 : 4 )
...
Рейтинг: 0 / 0
02.08.2005, 14:50
    #33196761
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Помогите доделать парсер
fl00 wrote:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  while($line = <FI>){
  while($line =~ m!(\Tennis. Turnir ATP.+?)\n(.+?)\n!gc)
  {
     my $name = $* 2 *;
     print "$name\n";
   }
}

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
02.08.2005, 15:32
    #33196976
fl00
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Помогите доделать парсер
Не получается
Код: plaintext
1.
2.
3.
4.
5.
Number found where operator expected at ./bot.pl line  15 , near "$*2"
        (Missing operator before  2 ?)
syntax error at ./bot.pl line  11 , near "{"
Can't use global $* in "my" at ./bot.pl line  15 , near "= $*"
syntax error at ./bot.pl line  21 , near "}"
Execution of ./bot.pl aborted due to compilation errors.
...
Рейтинг: 0 / 0
02.08.2005, 15:44
    #33197037
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Помогите доделать парсер
my $name = $2;
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
02.08.2005, 16:23
    #33197205
fl00
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Помогите доделать парсер
Код: plaintext
1.
2.
3.
4.
syntax error at ./bot.pl line  11 , near "{"
Can't use global $ 2  in "my" at ./bot.pl line  15 , near "= $2"
syntax error at ./bot.pl line  21 , near "}"
Execution of ./bot.pl aborted due to compilation errors.
...
Рейтинг: 0 / 0
02.08.2005, 16:31
    #33197243
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Помогите доделать парсер
fl00Подскажите как доделать. Нужно из файла выбрать только результаты теннисных событий. Т.е. нужно выбрать все, что идет после назватия Теннис. Турнир АТР. ... . ... .
А как вывести все строки до следующего заголовка??


А что ты считаеш заголовком ?


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#!/usr/bin/perl

use strict;

open (FI,"</home/sa/results.txt") || die "Can't open:  $!\n";

$/ .= $/;

while ( my $line = <FI> ) {
    if ( $line =~ m#Tennis\.\s+Turnir\s+ATP\..+?\n(.*)\n#s ) {
        print "$1";
    }
}

close FI;

?
...
Рейтинг: 0 / 0
02.08.2005, 17:05
    #33197384
fl00
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Помогите доделать парсер
Спасибо, то что нужно!
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Помогите доделать парсер / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]