代码之家  ›  专栏  ›  技术社区  ›  joe

如何从Perl中的csv文件提取字段?

  •  5
  • joe  · 技术社区  · 15 年前

    我想从一个csv文件(830K条记录)中提取一个特定的字段并存储到哈希中。在Perl中有没有任何快速而简单的方法,而不使用任何外部方法?

    我怎样才能做到?

    4 回复  |  直到 10 年前
        1
  •  11
  •   brian d foy    15 年前

    使用 Text::CSV_XS . 它速度快,柔韧性适中,测试非常好。许多这些问题的答案都是关于CPAN的。为什么要花时间去做一些不如很多人已经完善和测试过的东西呢?

    如果您不想使用外部模块(这是一个愚蠢的反对意见),请查看text::csv_xs中的代码并执行该操作。我经常感到惊讶的是,人们认为即使他们认为自己不能使用模块,他们也不会使用已知的、经过测试的解决方案作为同一任务的示例代码。

        2
  •  -1
  •   ghostdog74    15 年前

    假设为正常的csv(即,没有嵌入逗号),例如获取第二个字段

     $ perl -F"," -lane 'print $F[1];' file
    
        3
  •  -1
  •   p.marino    15 年前

    另请参见 code fragment 取自 The Perl Cookbook 这本书本身对于Perl解决常见问题很有帮助

        4
  •  -1
  •   taiko    10 年前

    我想使用split命令可以完成这项工作。(猜测列由逗号分隔,字段中不存在逗号)

        while (my $line = <INPUTFILE>){
        @columns= split ('<field_separator>',$line);  #field separator is ","
        }
    

    然后,从“列”数组的元素中,您可以构造您喜欢的任何哈希。