Perl - обнаружение записи заголовка - PullRequest
0 голосов
/ 17 февраля 2011

Если у меня есть текстовый файл с записью заголовка и полем, разделенным линией "|"что-то вроде ->

Column1|Column2|Column3\n
A|B|C\n
E|F|G\n
1|2|X\n

Есть ли способ определить, существует ли запись заголовка в файле программно?Загвоздка в том, что заголовки не всегда согласованы (поэтому в некоторых файлах Column1 может называться Column100)

Ответы [ 3 ]

1 голос
/ 17 февраля 2011

Единственный способ, которым я знаю: поля строк заголовка почти наверняка являются словами (текстом), строки данных имеют разные типы данных (по столбцам). Таким образом, если в первой строке есть столбцы по типам, но не одного типа, заголовок присутствует.

Вам понадобится какой-нибудь тестер типов данных и около 5 строк из этого текстового файла, чтобы все было понятно.

1 голос
/ 17 февраля 2011

Вы можете прочитать первую строку файла, разделить его на «|» и убедиться, что имя каждого столбца соответствует регулярному выражению /^Column\d+$/.

my @columns = split /\|/, $first_line;
if ( @columns == grep { m/^Column\d+$/ } @columns ) {
    # each column in the first line looks like a header
} else {
    # ...
}
0 голосов
/ 17 февраля 2011

Нет, вы не даете достаточно информации. Единственное свойство distince заголовка, которое вы описываете, - это символ канала, который не может существовать ни в чем, кроме заголовка, которому не может предшествовать не труба.

...