当前位置 博文首页 > perl对长度不一文本的行列进行置换的实现代码

    perl对长度不一文本的行列进行置换的实现代码

    作者:admin 时间:2021-02-06 18:18

    有时遇到各行或各列的长度不一致时就麻烦了,虽然可以在R里面把文件按最长的行(列)填充,但是不便,所以想起用perl去实现一个。
    由逗号分隔的不定长度的文本文件, 现要实现行列转置, 即由

    复制代码 代码如下:

    1,2,3,4,5,6,
    7,8,9,
    10,11,12,13,
    转换为:
    1,7,10,
    2,8,11,
    3,9,12,
    4,  ,13,
    5,  ,    ,
    6,  ,    ,

    以下是完整的代码,供大家参考。

    复制代码 代码如下:

    #!/usr/bin/perl -w
    my @matrix;
    my $max_len = 0;
    while(<DATA>){
    chomp;
    s/,$//g;
    my @fields = split /,/, $_;
    my $len = @fields;
    $max_len = $max_len > $len ? $max_len : $len;
    push @matrix, [@fields];
    }
    for my $col (0..$max_len - 1){
    for my $line (@matrix){
    print $line->[$col] || ' ', ',';
    }
    print "\n";
    }
    __DATA__
    1,2,3,4,5,6,
    7,8,9,
    10,11,12,13,

    准备学习下,自己动手实现一遍,最好是做成模板,随调随用。

    js
下一篇:没有了