perl - 如何使用 perl 从 CSV 文件中删除最后一列
问题描述
如何,
从每行中删除尾随?
现有的 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
解决方案
一次处理一行文件时,最好使用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 $_;
}
推荐阅读
- flutter - 无法添加或更新列表
- c# - 删除activemq消费消息/s
- python - 根据条件pyspark计算不同的列值
- kubernetes - Kubernetes 网络策略阻止 DNS
- python - 如何使用 MSSQL 和 Python 将元素与用户索引进行比较
- javascript - 如何在函数中查找属性
- webusb - WebUSB 是否支持超时?
- heroku - 如何将 GoDaddy 子域指向 Heroku 应用程序
- c - 在手臂上的 docker 容器中运行 C musl 应用程序时出现 time() 问题
- php - 如何修改下面的代码以输出格式为 dmY H:i:s 的日期?