使用Text :: CSV从CSV中检索第一行作为标题

瑞安·邓菲(Ryan Dunphy)

我感觉好像缺少了一些显而易见的东西,但是在文档中找不到任何答案。使用Perl对OOP还是陌生的,但是我正在使用Text :: CSV来解析CSV以供以后使用。

我将如何提取第一行并将值推入数组@headers?

这是我到目前为止的内容:

#!/usr/bin/perl
use warnings;
use diagnostics;
use strict;
use Fcntl ':flock';
use Text::CSV;

my $csv = Text::CSV->new({ sep_char => ',' });
my $file = "sample.csv";
my @headers;        # Column names

open(my $data, '<:encoding(utf8)', $file) or die "Could not open '$file' $!\n";
while (my $line = <$data>) {
  chomp $line;

  if ($csv->parse($line)) {             
    my $r = 0;      # Increment row counter
    my $field_count = $csv->fields();       # Number of fields in row

    # While data exists...
    while (my $fields = $csv->getline( $data )) {
      # Parse row into columns
      print "Row ".$r.": \n";    

      # If row zero, process headers
      if($r==0) {
        # Add value to @columns array
        push(@headers,$fields->[$c]);
      } else {
        # do stuff with records...
      }         
  }
  $r++
}           
close $data;

您可能会想到有一种方法可以引用第一行中的现有字段。

克里斯·查理

例如,文档中可以直接得出

#!/usr/bin/perl
use strict;
use warnings;
use Text::CSV_XS;

my $csv = Text::CSV_XS->new ({ binary => 1, eol => $/ });

my $file = 'o33.txt';
open my $io, "<", $file or die "$file: $!";

my $header = $csv->getline ($io);
print join("-", @$header), "\n\n";

while (my $row = $csv->getline ($io)) {
    print join("-", @$row), "\n";
}

__END__
***contents of o33.txt
lastname,firstname,age,gender,phone
mcgee,bobby,27,M,555-555-5555
kincaid,marl,67,M,555-666-6666
hofhazards,duke,22,M,555-696-6969

印刷:

lastname-firstname-age-gender-phone

mcgee-bobby-27-M-555-555-5555
kincaid-marl-67-M-555-666-6666
hofhazards-duke-22-M-555-696-6969

更新:考虑到您的问题,可能是您想通过列名来处理数据。为此,您可能可以使用某些东西(也来自文档),例如:

$csv->column_names ($csv->getline ($io));

while (my $href = $csv->getline_hr ($io)) {
    print "lastname is: ", $href->{lastname},
          " and gender is: ", $href->{gender}, "\n"
}

注意:可以使用Text::CSV代替Text::CSV_XS,因为前者是后者的包装

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Text :: CSV从CSV中检索第一行作为标题

来自分类Dev

使用第一列作为csv的标题

来自分类Dev

如何使用生成器函数一次从csv文件中检索一行

来自分类Dev

使用PHP编辑第一行CSV

来自分类Dev

使用sed删除每个csv文件的第一行

来自分类Dev

使用PHP编辑第一行CSV

来自分类Dev

使用Goodby CSV跳过第一行

来自分类Dev

如何使用第一行中的列名将CSV导入BigQuery?

来自分类Dev

对整个数组使用str_replace [仅从csv中获取第一行]

来自分类Dev

如何使用第一行中的标签将此.csv文件转换为.xml

来自分类Dev

如何使用sed删除csv文件的第一行和最后一行

来自分类Dev

使用php从CSV加载数组并索引第一行和第一列

来自分类Dev

Python:无法使用read_csv正确读取csv文件的第一行

来自分类Dev

在节点js中使用fast-csv删除csv文件的第一行

来自分类Dev

在节点js中使用fast-csv删除csv文件的第一行

来自分类Dev

如何让 Python 使用 csv 读取一行中的第一个单词而不是第一个字符?

来自分类Dev

使用python(PANDA)在csv文件中添加一行

来自分类Dev

使用php将第一行从csv移动到另一个

来自分类Dev

使用第一行作为参考替换所有行中的特定字符匹配项

来自分类Dev

使用Text :: CSV根据变量内容在csv文件上打印一行

来自分类Dev

如何在python中使用CSV文件的第一行创建列表

来自分类Dev

如何使用带有第一行的csv文件创建字典

来自分类Dev

使用AWK搜索.CSV文件-仅适用于第一行

来自分类Dev

使用cbind创建列式.csv文件,但“ X”始终出现在第一行

来自分类Dev

为什么 CSV Helper 使用 ASP.Net MVC 只读取第一行?

来自分类Dev

读取CSV文件作为字典,其中包含第一行作为标题(键)

来自分类Dev

读取CSV文件作为字典,其中包含第一行作为标题(键)

来自分类Dev

读取CSV文件并使用每一行作为spock的where子句中的输入

来自分类Dev

如何将 CSV 文件的第一行视为 python csv.reader 中的标题

Related 相关文章

  1. 1

    使用Text :: CSV从CSV中检索第一行作为标题

  2. 2

    使用第一列作为csv的标题

  3. 3

    如何使用生成器函数一次从csv文件中检索一行

  4. 4

    使用PHP编辑第一行CSV

  5. 5

    使用sed删除每个csv文件的第一行

  6. 6

    使用PHP编辑第一行CSV

  7. 7

    使用Goodby CSV跳过第一行

  8. 8

    如何使用第一行中的列名将CSV导入BigQuery?

  9. 9

    对整个数组使用str_replace [仅从csv中获取第一行]

  10. 10

    如何使用第一行中的标签将此.csv文件转换为.xml

  11. 11

    如何使用sed删除csv文件的第一行和最后一行

  12. 12

    使用php从CSV加载数组并索引第一行和第一列

  13. 13

    Python:无法使用read_csv正确读取csv文件的第一行

  14. 14

    在节点js中使用fast-csv删除csv文件的第一行

  15. 15

    在节点js中使用fast-csv删除csv文件的第一行

  16. 16

    如何让 Python 使用 csv 读取一行中的第一个单词而不是第一个字符?

  17. 17

    使用python(PANDA)在csv文件中添加一行

  18. 18

    使用php将第一行从csv移动到另一个

  19. 19

    使用第一行作为参考替换所有行中的特定字符匹配项

  20. 20

    使用Text :: CSV根据变量内容在csv文件上打印一行

  21. 21

    如何在python中使用CSV文件的第一行创建列表

  22. 22

    如何使用带有第一行的csv文件创建字典

  23. 23

    使用AWK搜索.CSV文件-仅适用于第一行

  24. 24

    使用cbind创建列式.csv文件,但“ X”始终出现在第一行

  25. 25

    为什么 CSV Helper 使用 ASP.Net MVC 只读取第一行?

  26. 26

    读取CSV文件作为字典,其中包含第一行作为标题(键)

  27. 27

    读取CSV文件作为字典,其中包含第一行作为标题(键)

  28. 28

    读取CSV文件并使用每一行作为spock的where子句中的输入

  29. 29

    如何将 CSV 文件的第一行视为 python csv.reader 中的标题

热门标签

归档