我正在尝试加载csv文件,转置它并写一个新文件。除了写一个新文件外,我的一切工作正常。我在网上看了一下没有成功。
use strict;
use warnings;
use Text::CSV;
use Data::Dump qw(dump);
use Array::Transpose;
my @data; # 2D array for CSV data
my $file = 'sample_array.csv';
my $csv = Text::CSV->new;
open my $fh, '<', $file or die "Could not open $file: $!";
while( my $row = $csv->getline( $fh ) ) {
shift @$row; # throw away first value
push @data, $row;
}
@data=transpose(\@data);
dump(@data);
这里的输出是转置数组@data (["blah", 23, 22, 43], ["tk1", 1, 11, 15],["huh", 5, 55, 55])
。我需要将该输出写入新的CSV文件。
CSV文件:
text,blah,tkl,huh
14,23,1,5
12,22,11,55
23,42,15,55
答案 0 :(得分:1)
请参阅dump
之后的代码。这来自Text::CSV概要:
use strict;
use warnings;
use Text::CSV;
use Data::Dump qw(dump);
use Array::Transpose;
my @data; # 2D array for CSV data
my $file = 'sample_array.csv';
my $csv = Text::CSV->new;
open my $fh, '<', $file or die "Could not open $file: $!";
while( my $row = $csv->getline( $fh ) ) {
shift @$row; # throw away first value
push @data, $row;
}
@data=transpose(\@data);
dump(@data);
open $fh, ">:encoding(utf8)", "new.csv" or die "new.csv: $!";
for (@data) {
$csv->print($fh, $_);
print $fh "\n";
}
close $fh or die "new.csv: $!";
答案 1 :(得分:0)
随着Toolic的添加,由于我正在处理的特定数据类型,我不得不进行一些编辑。这是一个非常大的工程符号集。单位和长小数的负数。作为参考,我的最终代码如下。
use strict;
use warnings;
use Text::CSV;
use Data::Dump qw(dump);
use Array::Transpose;
my @data; # 2D array for CSV data
my $file = 'rawdata.csv';
my $csv = Text::CSV->new({ binary => 1, quote_null => 0 });
open my $fh, '<', $file or die "Could not open $file: $!";
while( my $row = $csv->getline( $fh ) ) {
#shift @$row; # throw away first value, I needed the first values.
push @data, $row;
}
@data=transpose(\@data);
open $fh, ">:encoding(utf8)", "rawdata_trans.csv" or die "rawdata_trans.csv: $!";
for (@data) {
$csv->print($fh, $_);
print $fh "\n";
}
close $fh or die "rawdata_trans.csv: $!";