我正在尝试拆分具有 150 万行的 CSV 文件
示例:
test;abc;kk
test1;abc1;kk1
以上完整数据存在于CSV第一列下
我试图通过尝试逐行读取 csv 但没有获得所需的输出来将这些字段映射到 json 对象。由于一些官方问题,我不认为使用 text::csv
#!/usr/bin/perl
use strict;
use warnings;
my $file = $ARGV[0] or die "Need to get CSV file on the command line\n";
open(my $data, '<', $file) or die "Could not open '$file' $!\n";
while (my $line = <$data>) {
chomp $line;
my @fields = split ";" , $line;
for (my $i = 0; $i <= 2; $i++) {
print "$fields[$i] ";
}
}
My output now shows
t e s t ; a b c ; k k ; t e s t 1 ; a b c 1 ; k k 1.
我没有得到首选输出。我可能犯了一些错误 一旦我运行代码我得到
预期输出应该是第一次迭代......然后下一行进行第二次迭代
fields[0] = test
fields[1] = abc
fields[2] = kk
答案 0 :(得分:1)
尝试下一个代码,确保在 split 命令中您使用了正确的分隔符:
split ";" , $line;
这是perl代码
#!/usr/bin/perl
use strict;
use warnings;
my $file = $ARGV[0] or die "Need to get CSV file on the command line\n";
open(my $data, '<', $file) or die "Could not open '$file' $!\n";
my $line_no = 0;
while (my $line = <$data>) {
chomp $line;
$line_no++;
print "Line $line_no:\n";
my @fields = split ";" , $line;
for (my $i = 0; $i <= 2; $i++) {
print "fields[$i] = $fields[$i]\n";
}
}
这里是输入文件的内容
test;abc;kk
test1;abc1;kk1
这是输出
Line 1:
fields[0] = test
fields[1] = abc
fields[2] = kk
Line 2:
fields[0] = test1
fields[1] = abc1
fields[2] = kk1