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

То, что я написал выводи только первую строчку после заголовка. А как вывести все строки до следующего заголовка?? Пример файла внизу...
Код: 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
(Perl) Помогите доделать парсер
    #33196761
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
(Perl) Помогите доделать парсер
    #33196976
fl00
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не получается
Код: 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
(Perl) Помогите доделать парсер
    #33197037
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
my $name = $2;
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
(Perl) Помогите доделать парсер
    #33197205
fl00
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
(Perl) Помогите доделать парсер
    #33197243
g613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
(Perl) Помогите доделать парсер
    #33197384
fl00
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, то что нужно!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Помогите доделать парсер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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