【问题标题】:Perl 2D Array with undef to CSVPerl 2D 数组与 undef 到 CSV
【发布时间】:2014-05-02 21:38:35
【问题描述】:

我必须将带有 undef 输入的二维数组更改为 csv 文件。转储器值看起来像

VAR1      [
            'Entry1',
            undef,
            undef,
            undef,
            17
          ],
          [
            'Entry2',
            8,
            undef,
            undef,
            17
          ],
          [
            'Entry3',
            undef,
            4,
            undef,
            17
          ],

对于undef,我需要输入0。我正在使用下面的代码,但它没有给出所需的结果。

    open MYFILE, ">>new.csv";
    for ($i=1,$i <= $flag, $i++){
        print MYFILE "$outputArray[$i][0],";
        for ($j=0,$j<= 4, $j++){
        print MYFILE int($outputArray[$i][$j]).",";
        }
        print MYFILE "\n";
    }
    close MYFILE;   

我最终的 csv 会是这样的

Entry1,0,0,0,17
Entry2,8,0,0,17
Entry3,0,4,0,17 

【问题讨论】:

  • for ($i=1,$i &lt;= $flag, $i++) 表示与for ($i=1;$i &lt;= $flag; $i++) 非常不同的东西,这可能是您想要的。
  • 如果您使用我为您编写的代码来制作数组,请将$val = '' 替换为$val = 0

标签: arrays perl csv


【解决方案1】:

迭代多维数组时,使用forforeach 样式。如果不需要,没有理由跟踪索引。

此外,您可以使用定义的或运算符//map 将所有undef 值快速转换为您喜欢的默认值。

for my $row (@outputArray) {
    print MYFILE join(',', map {$_ // 0} @$row), "\n";
}

【讨论】:

    猜你喜欢
    • 2017-08-07
    • 2021-08-24
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 2018-08-06
    • 1970-01-01
    相关资源
    最近更新 更多