在Perl中读取CSV文件中的行的一部分

用户名

我正在尝试读取具有如下数据的csv文件:

++++++++++++++++++++++++++++

My1,10,20,30,40,50,60,70

My2,10,20,30,40,50,60

My3,10,20,30,40,50,60,70,80

++++++++++++++++++++++++++++

现在,我要将My,My1 ....存储在其中,@names并将每行中的数字存储到中@numbers

到目前为止,我已经编写了这段代码

  use strict;
  use warnings;
  use Text::CSV;

  my $file = "result.csv";
  my @names = undef;
  my @numbers = undef;
  open my $fh, "<", $file or die "$file: $!";

  my $csv = Text::CSV->new ({
      binary    => 1,
      auto_diag => 1,
      });
    shift(@names);
    shift(@numbers);
  while (my $row = $csv->getline ($fh)) {
    push(@names,$row->[0]);
    push(@numbers,$row->[1...5]);
      }
  close $fh;

for my $i ( 0 .. $#names ) {
    print "names:$names[$i] \tNumbers:$numbers[$i] \n";
}

但是此代码不起作用,仅当我@numbers在打印时使用时,它才会在所有名称前面打印所有数字

菲利波·劳里亚(Filippo Lauria)

也许我不明白这个问题,但是这里有可能的解决方案:

读:

...
my @names = ();
my @numbers = ();

open CSVFILE, 'result.csv';
my $j = 0;
while (my $line = <CSVFILE>) {
  chomp;
  my @csv_line = split(/\s?,\s?/, $line);
  push @names, $csv_line[0]; #or $names[$j] = $csv_line[0];
  for (my $i = 1; $i <= $#csv_line; $i++) {
    $numbers[$j][$i] = $csv_line[$i]; # $i-th number, for the $j-name
  }
  $j++;
}
close(CSVFILE);

写作:

...
my $name;
my @numbers;
my $new_line = join(',', ($name, @numbers));
open CSVFILE, '>>result.csv';
print CSVFILE "$new_line\n";
close CSVFILE;

印刷:

...
my $M = $names;
for (my $i = 0; $i < $M; $i++) {
  print $names[$i] . ":\n ";
  my $N = $numbers[$i];
  for (my $k = 0; $k < $N; $k++) {
    print $numbers[$i][$k] . " ";
  }
  print "\n";
}
...

印刷:

My1:
 10 20 30 40 50 60 70 
My2:
 10 20 30 40 50 60 
My3:
 10 20 30 40 50 60 70 80 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Perl中读取CSV文件的一部分

在dataweave中读取JSON Payload作为CSV文件的一部分

读取文件中的行并打印出字符串的一部分

读取csv文件的一部分

读取.csv文件的一部分

从文件中读取浮点值将删除小数部分的全部或一部分

在python中读取文件时如何跳过每一行的一部分

如何读取文本文件中的特定行并返回其中的一部分?

为什么用内置int()读取.txt文件中的行的一部分抛出ValueError?

有没有办法在fortran中读取文件的一部分?

在Shell脚本中读取文件并选择该行的一部分

从文件读取中匹配字符串的一部分

在C中仅读取文件的一部分

从Java中的Google云端存储读取/下载文件的一部分

根据名称的一部分读取 R 中的文本文件列表

读取行的一部分以存储在变量中

外部文件中的WHILE的一部分

熊猫read_csv防止文件中的引号成为数据的一部分

在 PySpark 中读取文件与读取整个目录然后过滤和读取目录的一部分的区别?

删除文件中由模式定义元素的行的一部分

在python的文本文件中替换特定行的一部分

如何从目录中所有.txt文件中获取行的一部分?

如何读取txt文件的一部分

如何读取dBase文件的一部分

如何读取文本文件中一行的一部分?

如何只读取大文件中一行的一部分?

c#从许多文件中读取并将其中一部分写入新文件

读取文件时如何删除行的第一部分?

Azure应用程序中的文件读取操作错误“找不到路径的一部分”