Транспонирование столбцов Excel в строки на основе идентификаторов с использованием Perl - PullRequest
0 голосов
/ 09 сентября 2011

Привет, я довольно новичок в Perl, и меня попросили выполнить задание.

У меня есть файл записи в формате .csv с 10 или более файлами, и меня попросили транспонировать записи, чтобы каждая строка переворачиваласьпо 10 строк в каждой записи.

id Column1 column2 column3 ..... column N
1  apple   Red     Medium        Text1
2  Mango   Yellow  Large         Text2
3  Banana  Yellow  small         Text3
4  Apple   Red     Medium        Text4
5  Pear    Green   Medium        Text5

И это должно отображаться как

id 1 column1   Apple
id 1 column2   Red
id 1 column3   Medium
.
.
id 1 columnN   text1

Любая помощь или предложение очень ценится.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2011

Редактировать: Для каждого дополнительного ввода, похоже, нужны столбцы заголовков с чередованием:

use Text::CSV_XS;

my $csv = Text::CSV_XS->new({ binary => 1, sep_char => ';' })
    or die;

my $hdr = $csv->getline(\*DATA);
while (my $row = $csv->getline(\*DATA)) {
    $csv->combine(
        map { $hdr->[0], $row->[0], $hdr->[$_], $row->[$_] } 1..$#$row
    );
    print $csv->string,"\n";
}

__DATA__
id;Column1;column2;column3;columnN
1;apple;Red;Medium;Text1
2;Mango;Yellow;Large;Text2
3;Banana;Yellow;small;Text3
4;Apple;Red;Medium;Text4
5;Pear;Green;Medium;Text5

Это дает:

id;1;Column1;apple;id;1;column2;Red;id;1;column3;Medium;id;1;columnN;Text1
id;2;Column1;Mango;id;2;column2;Yellow;id;2;column3;Large;id;2;columnN;Text2
id;3;Column1;Banana;id;3;column2;Yellow;id;3;column3;small;id;3;columnN;Text3
id;4;Column1;Apple;id;4;column2;Red;id;4;column3;Medium;id;4;columnN;Text4
id;5;Column1;Pear;id;5;column2;Green;id;5;column3;Medium;id;5;columnN;Text5
0 голосов
/ 09 сентября 2011

Как заметил @aartist, все, что вам нужно, это Text :: CSV . Вы можете установить его с помощью утилиты cpan или с помощью этого oneliner:

curl -L http://cpanmin.us | perl - --sudo Text::CSV

Пожалуйста, прочитайте документацию, ваша задача должна быть решена очень просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...