根据 perl 中的标题对 CSV 列值进行排序

施维塔

我有包含 350 个字段的大型 csv 文件。标题和值应根据另一个 csv 文件中的标题进行排列。

为了尝试较小的情况,我有以下代码参考标题 {ABCD}

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}]);
}

它正确打印标题,但其他下一行的值为空

输入文件 -

甲、乙、丁、丙

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);

我的版本没有这个功能header但我认为,关键是您必须为输入 CSV 文件定义列名。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据列值perl text :: csv拆分文件

如何读取csv文件,并根据csv中的数据添加标题和新列并输出新的csv

如何根据列的值对Laravel中的行进行排序?

根据R中的特定列值对列块进行排序

根据列中的值对数据表进行排序

根据列中的不同值对 RDD 进行排序

在Perl中按值对哈希散列进行排序的问题

根据多列进行perl排序(列顺序)

根据表中的值返回列标题

根据R中不同列中的值对列中的值进行排序

根据一列中的匹配项合并2个CSV文件,而不管标题行

从shell脚本中读取csv并根据与用户输入的最接近匹配来打印列标题

如何根据其他列值对一列中的值进行排序?

根据列表中的值对字典进行排序

如何根据内部值对 CSV 字符串进行排序?

根据一列的相同值进行分组和排序,然后对这些组中的另一列进行排序

如何根据其他列中的值对 Pandas 中的值进行排序?

Powershell - 根据列对 CSV 文件中的唯一值进行分组和计数

如何根据分配给它的值对列中的值进行排序?

如何根据具有重复值的列对熊猫中的值进行排序

根据第一列对CSV文件进行排序

根据标题中的浮点后缀对数据框中的列进行排序

根据列中的最大值对列进行排序 - R 数据框排列

根据列对数据框中的日期进行排序,并使用Pandas保持其他列的值

根据列的值和另一列中列表的长度对数据框进行排序

如何根据散列中的值通过函数对散列进行排序

在python中忽略csv中的标题对数据进行排序

根据$ _POST值在csv文件上创建标题名称

如何根据dplyr中的group_by对列中的值进行排序