Как использовать метод строк Perl TableExtract при наличии дублирующих полей заголовка
Я пытаюсь использовать TableExtract для анализа таблицы, в которой некоторые заголовки имеют одинаковые имена, но разные данные. Метод row возвращает значения для первых заголовков для обоих наборов заголовков.
my @headers = qw(Flight Rating Airline Sched Actual Gate Sched Actual Gate Status Equip Track);
my $te = HTML::TableExtract->new(
headers => \@headers);
$te->parse_file($myfile);
my ($table) = $te->tables;
Я печатаю данные так:
for my $row ($te->rows ) {
foreach (@$row) {
$_ =~ s/\n//g;
$_ =~ s/\r//g;
}
print OUT join("\t", @$row),"\n";
}
Результат таков:
AA 1251 American Airlines 9:30 PM 10:22 PM T-CC37 9:30 PM 10:22 PM T-CC37 Landed 68 min M80
Должно было быть так:
AA 1251 American Airlines 9:30 PM 10:22 PM T-CC37 11:00 PM 12:08 AM T-C77 Landed 68 min M80
Первые данные "Расписание фактических ворот" (представляющие вылет) дублируются во вторых столбцах "Расписание фактических ворот" (представляющих прибытие).
Я могу видеть правильные данные, когда я выгружаю всю таблицу с помощью Dumper($table)
Как я могу получить метод строк, чтобы правильно проанализировать таблицы с дубликатами полей заголовка?
1 ответ
Я нашел ответ: необходимо добавить атрибут "slice_columns=> 0" в конструктор HTML::TableExtract.
Я не совсем уверен, почему это необходимо. Справка для TableExtract в CPAN гласит: "Столбцы, которые не находятся под одним из предоставленных заголовков, будут игнорироваться, если для slice_columns не установлено значение 0. По умолчанию столбцы будут переставлены в том же порядке, что и предоставленные вами заголовки (см. Параметр automap для получения дополнительной информации), если slice_columns не равна 0."
В моей таблице каждый столбец находится под предоставленным заголовком. Должно быть взаимодействие в случае, когда заголовки не являются уникальными, и установка slice_columns в 0 устраняет проблему.
my $te = HTML::TableExtract->new(
headers => \@headers,
slice_columns=> 0
);