【问题标题】:How can we add columns to a csv file in perl?我们如何在 perl 中将列添加到 csv 文件?
【发布时间】:2014-04-12 00:33:53
【问题描述】:

我的第一个和第二个 CSV 文件包含以下数据。现在我想将第二个文件的数据插入到第一个文件中,这样我就会得到 final.csv 中所示的数据。

First.csv
e_id,e_sal,e_loc
001,20000,mumbai
002,40000,newyork

Second.csv
e_name,e_mngr
raj verma,vineet kothari
sundar prasad,danney morena

Final.csv
e_id,e_name,e_sal,e_mngr,e_loc
001,raj verma,20000,vineet kothari,mumbai
002,sundar prasad,40000,danney morena,newyork

我正在尝试使用这段代码。但它只是附加。

while (!eof($fh1) and !eof($fh2)) { 
    my $line1 = <$fh1>;
    my $line2 = <$fh2>;
    my @l1 = split /\s+/, $line1;
    my @l2 = split /\s+/, $line2;
    push (@l1, @l2);
}

【问题讨论】:

    标签: perl csv


    【解决方案1】:

    这可能不是最优雅的解决方案,但它可以完成工作,假设格式完全符合指定:

    use strict;
    use warnings;
    
    open FH, "<First.csv";
    open FH2, "<Second.csv";
    open OUT, ">Final.csv";
    while (my $l = <FH>) {
        my @s1 = split(/,/, $l);
        my @s2 = split(/,/, <FH2>);
        for (my $i = 0; $i < scalar(@s1); $i++) {
            print OUT $s1[$i];
            for (my $j = $i; $j < scalar(@s2); $j++) {
                chomp $s2[$j];
                print OUT ",$s2[$j],";
                last;
            }
        }
    }
    close OUT;
    close FH;
    close FH2;
    

    【讨论】:

    • 查看此问题以了解打开文件的最佳做法:stackoverflow.com/questions/318789/… 此外,将您的代码作为代码部分发布在您的答案中通常更有帮助。
    • 感谢您的建议!
    猜你喜欢
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多