在perl中根据标题对CSV列值进行排序
我有一个包含350个字段的大型csv文件。标题和值应根据另一个csv文件中的标题进行排列 为了在较小的箱子上试用,我有以下代码- 引用头{A B C D}在perl中根据标题对CSV列值进行排序,perl,Perl,我有一个包含350个字段的大型csv文件。标题和值应根据另一个csv文件中的标题进行排列 为了在较小的箱子上试用,我有以下代码- 引用头{A B C D} use File::Basename; use Array::Utils qw(:all); use Text::CSV; my @headers = qw(A B C D); my $csv_in = Text::CSV->new({binary => 1, auto_diag => 1}); my $csv_out =
use File::Basename;
use Array::Utils qw(:all);
use Text::CSV;
my @headers = qw(A B C D);
my $csv_in = Text::CSV->new({binary => 1, auto_diag => 1});
my $csv_out = Text::CSV->new({binary => 1, auto_diag => 1});
open my $in, '<:encoding(UTF-8)', 'test.csv';
open my $out, '>:encoding(UTF-8)', 'test_out.csv';
$csv_in->header($in);
$csv_out->say($out, [@headers]);
while (my $row = $csv_in->getline_hr($in)) {
$csv_out->say($out, [@{$row}{@headers}]);
}
使用File::Basename;
使用数组::Utils qw(:all);
使用Text::CSV;
my@headers=qw(A B C D);
我的$csv\u in=Text::csv->new({binary=>1,auto\u diag=>1});
我的$csv\u out=Text::csv->new({binary=>1,auto\u diag=>1});
打开我的$in,':编码(UTF-8)''test_out.csv';
$csv_in->header($in);
$csv_out->say($out,[@headers]);
while(my$row=$csv\u in->getline\u hr($in)){
$csv_out->say($out,[@{$row}{@headers}]);
}
它正在正确打印标题,但下一行的值为空
输入文件-
A、 B,D,C
1,2,4,3
预期产量-
A、 B、C、D
1,2,3,4
电流输出-
A、 B、C、D
,
有人能帮我解决这个问题吗?我想,我有另一个版本的perl和Text::CSV。这对我很有用:
$csv_in->column_names($csv_in->getline($in));
而不是
$csv_in->header($in);
我的版本缺少功能
标题
。但我认为,关键的一点是,您必须定义输入CSV文件的列名。是的。你知道代码中的错误在哪里吗?如果看不到输入,我们就帮不了你什么。输入文件test.csv如下-第1行,A,B,D,C第2行-1,2,4,3你需要在问题本身中输入示例和所需的输出,而不是注释。(尽管我坚持我对你从中复制代码的问题的回答)