perl對長度不一文本的行列進行置換的實現代碼

來源:互聯網
上載者:User

有時遇到各行或各列的長度不一致時就麻煩了,雖然可以在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,

準備學習下,自己動手實現一遍,最好是做成模板,隨調隨用。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.