【问题标题】:Read CSV and create different arrays读取 CSV 并创建不同的数组
【发布时间】:2009-09-01 10:49:56
【问题描述】:

我正在创建一个脚本来从 csv 文件中读取值并将这些值用于其他任务。我编写了以下代码来读取值。

sample file:

site,type,2009-01-01,2009-01-02,....
X,A,12,10,...
X,B,10,23,...
Y,A,20,33,...
Y,B,3,12,...

and so on....

代码:

my @value;
while (<INFILE>) {
    next if $_ !~ /B/;
        my ($v1, $v2, @v3) = split /[,]/, $_;
        push(@value, @v3);
}

它为我提供了 B 类型的所有值。我需要帮助来为每个 B 类型值创建不同的数组。

【问题讨论】:

    标签: perl arrays


    【解决方案1】:

    阅读 CSV 文件比我们大多数人最初想象的要难。事实证明,读取 CSV 文件非常困难。因此,我的建议是不要自己这样做,而是使用Text::CSV_XS

    【讨论】:

    • 一开始看起来很简单,其实不然。
    【解决方案2】:

    据我了解,您想使用列表列表:

    my @value;
    while (<INFILE>) {
        next if $_ !~ /B/;
        chomp;
        my ( $v1, $v2, @v3 ) = split /[,]/, $_;
        push @value, [@v3];  # This creates a list of lists
    }
    
    use Data::Dumper::Simple;
    
    print Dumper @value;
    

    【讨论】:

      【解决方案3】:

      请看一下这个link。希望对您有所帮助。

      【讨论】:

      • perldoc perllol 很好,虽然我发现 perldoc perldsc 更有帮助(虽然更复杂。请注意,您可以在此处在线获取所有 Perl 文档的最新版本 perldoc.perl.org。您还应该能够随时在终端中获取文档(假设是相当标准的 Perl 安装 - 尽管某些操作系统删除了文档)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 2017-04-13
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      相关资源
      最近更新 更多