首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用perl从CSV文件中删除最后一列

如何使用perl从CSV文件中删除最后一列
EN

Stack Overflow用户
提问于 2019-08-23 17:59:40
回答 2查看 118关注 0票数 0

如何从每行中删除尾随的,

现有CSV文件:

代码语言:javascript
复制
S.NO,NAME,S1,S2,S3,S4,S5,       
1,aaaaaaa,66,88,77,55,99,       
2,bbbbbbb,55,66,88,99,77,           

代码是:

代码语言:javascript
复制
 #!/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文件:

代码语言:javascript
复制
S.NO,NAME,S1,S2,S3,S4,S5                  
1,aaaaaaa,66,88,77,55,99          
2,bbbbbbb,55,66,88,99,77
EN

Stack Overflow用户

发布于 2019-08-23 18:46:59

在一次处理一行文件时,最好使用while (它也会一次读取文件一行)而不是foreach (它会先读取整个文件,然后再给出第一行)。

如果您只想删除最后一个逗号,则无需将该文件视为CSV文件。

代码语言:javascript
复制
#!/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 $_;
}
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57623928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档