如何从每行中删除尾随的,?
现有CSV文件:
S.NO,NAME,S1,S2,S3,S4,S5,
1,aaaaaaa,66,88,77,55,99,
2,bbbbbbb,55,66,88,99,77, 代码是:
#!/usr/bin/perl
use strict;
use warnings;
open my $inn, '<', 'a1.csv' or die "Cannot open file for input: $!";
open my $outt, '>', 'a2.csv' or die "Cannot open file for output: $!";
foreach my $line (<$inn>) {
chomp $line;
my @data = split /,/, $line;
printf $outt "%s,%d\n", $data[0], scalar grep /^GO:/, @data;
} 我期望的输出CSV文件:
S.NO,NAME,S1,S2,S3,S4,S5
1,aaaaaaa,66,88,77,55,99
2,bbbbbbb,55,66,88,99,77发布于 2019-08-23 18:46:59
在一次处理一行文件时,最好使用while (它也会一次读取文件一行)而不是foreach (它会先读取整个文件,然后再给出第一行)。
如果您只想删除最后一个逗号,则无需将该文件视为CSV文件。
#!/usr/bin/perl
use strict;
use warnings;
open my $inn, '<', 'a1.csv' or die "Cannot open file for input: $!";
open my $outt, '>', 'a2.csv' or die "Cannot open file for output: $!";
while (<$inn>) {
# Remove trailing comma on first line
s/,$// if $. == 1;
print $outt $_;
}https://stackoverflow.com/questions/57623928
复制相似问题