1. Perl / Говнокод #10339

    −122

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    my (@data) = $content =~ m#href="/show/\d+.*?">(.*?)</a>.*?(Ep: \d+).*?(at \d{2}:\d{2}).*?</small>#gsi;
    	
    for (my $i; $i < @data;){
    	$data .= $data [$i++].' '.$data [$i++].' '.$data [$i++];
    	$data .= "\n" unless $i == @data;
    }

    Распарсил.

    Запостил: VictorVonSpok, 21 Мая 2012

    Комментарии (11) RSS

    • кодер предполагает, а perl располагает
      Ответить
    • Берите к себе свежую кровь:
      http://www.linux.org.ru/forum/development/7775969?cid=7779251
      Ответить
    • Автор напиши где подвох, а то не по глазам ?
      Ответить
      • Разнородные данные помещаются в один массив. Помимо того, вывод этих данных с использованием инкрементов в индексах. Ну и, конечно же, сам регэксп.
        Ответить
        • my $i = 1;
          my $data = join "", map { $i++ % 3 ? $_." " : $_."\n"}  $content =~ m#href="/show/\d+.*?">(.*?)</a>.*?(Ep: \d+).*?(at \d{2}:\d{2}).*?</small>#gsi;

          Так лучше ?
          Правда лишний \n будет в конце, но я думаю это не критично.
          Ответить
        • import lxml.html, re
          
          EP_TIME = re.compile("Ep: (\d+).*at ([\d:]+)")
          
          data = []
          for e in root.xpath('//small/a[starts-with(@href, "/show/")]/..'):
              [name, info] = list(e.itertext())[0:2]
              (ep  , time) = EP_TIME.search(info).groups()
              data.append((name, ep, time))
          Ответить

    Добавить комментарий