如何合并多个文本文件到一个新的csv文件与列标题创建使用Perl

niwlg2el  于 2023-05-23  发布在  Perl
关注(0)|答案(1)|浏览(132)

我是Perl的新手,需要一些指导。我有多个文本文件,并希望将它们合并到一个新的csv文件。然后,从csv文件中,我想将字符串拆分为多列,如下面的“输出”格式所示。有人能帮帮我吗?
文本文件#1.txt

Name:A
Test1:80
Test2:60
Test3:50

文本文件#2.txt

Name:B
Test1:85
Test2:78
Test3:60

输出(格式#1):新建文本文件#3.csv

Name    Test1   Test2   Test3
A         80    60     50
B         85    78     60

输出(格式#2):新建文本文件#3.csv

Name    Test    Data        
A           1   80  
A           2   60
A           3   50
B           1   85
B           2   78
swvgeqrz

swvgeqrz1#

阅读文件:

Open FILE, "filename.txt" or die $!;

    #create hash
    %hash = ();

    #read file - you have to do this for all files
    while (<FILE>) {

    if(first_row){
       $name = (split ':')[1];
    }else{
       $points = split ':'[1];
       push( @{$hash{$name}}, $points );
    }
}

在这里,你有一个hash:

A -> [80,60,50]
B -> [85,78,60]

你现在可以使用这个哈希来打印你的csv文件:
对于文件1:

open CSV1, ">", "1.csv" or die $!

foreach my $name( keys %hash )    
{
  $points = $hash{$name};
  print CSV1 $name + ";" + join(";", @{$points})
  print "/n";
}

对于文件2:

open CSV2, ">", "2.csv" or die $!

foreach my $name( keys %hash )    
{
  $points = $hash{$name};

  $testnumber = 0;
  foreach $point ( in @$points){
      print CSV2 $name + ";" $testnumber+1 + ";" + $point + "\n"; 
  }
}

希望这对你有帮助,如果有什么不清楚,你可以问。不要复制粘贴,它可以包含小错误,但我假设的思维方式是明确的
更新:“;“是因为csv在该字符上拆分列
请反馈

相关问题