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

有时遇到各行或各列的长度不一致时就麻烦了,虽然可以在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,

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

(0)

相关推荐

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

    有时遇到各行或各列的长度不一致时就麻烦了,虽然可以在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 -wmy @matrix;my $ma

  • 易语言取文本左右及中间指定长度的文本内容

    这个功能要用到以下几个命令: 取文本左边命令 取文本右边命令 取文本中间命令 例程 说明 通过"取文本左边"命令获取一段文本从左数起指定长度的文本. 通过"取文本右边"命令从右起取出4个字符(两个汉字). 通过"取文本中间"命令从一段文本中的指定位置起取出指定数量的字符. 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持.如果你想了解更多相关内容请查看下面相关链接

  • 文本框只能输入数字的js代码(含小数点)

    只能输入0-9多包括小数点 <html> <head> <meta http-equiv="content-Type" content="text/html;charset=gb2312"> <title>js 只能输入数字和小数点</title> <script language="JavaScript" type="text/javascript">

  • JavaScript实现焦点进入文本框内关闭输入法的核心代码

    js实现焦点进入文本框内关闭输入法:imeMode 要用到的东西: imeMode:xxx 有四个参数 active 代表输入法为中文 inactive 代表输入法为英文 auto 代表打开输入法 (默认) disable 代表关闭输入法 <INPUT onfocus=" this.style.imeMode='active' " /> <INPUT onfocus=" this.style.imeMode='inactive' " /> &

  • javascript实现富文本框选中对齐的思路与代码

    目录 需求: 分析需求: 1如何获取选中的部分 * 2什么是块元素 3末梢元素(没有子节点的元素) 实现思路: 代码实现: 总结 需求: 一个可编辑(contenteditable=true)的div,对齐选中内容,左.中,右 ,其实质是:对选中的末梢节点,找到块属性的父元素,设置text-algin:center: MDN:text-align CSS属性定义行内内容(例如文字)如何相对它的块父元素对齐.text-align 并不控制块元素自己的对齐,只控制它的行内内容的对齐. 分析需求: 我

  • javascript实现的一个自定义长度的文本自动换行的函数。

    很多朋友在制作网页过程中总是发现某些时候一些英文会把原来好好的表格撑开而导致变形,虽然可以使用style="table-layout:fixed;word-wrap:break-word;word-break:break-all" 来解决这个问题,但有些时候会导致内容显示不完整而被隐藏了起来,并没有做到自动换行的效果. 于是偶就想写一个这样的函数来修补这个缺陷,这个函数很简单,但这里只是提供一种思路来解决这个问题. function fnAddBr(id, iPerLineLen){.

  • javascript 一个自定义长度的文本自动换行的函数

    很多朋友在制作网页过程中总是发现某些时候一些英文会把原来好好的表格撑开而导致变形,虽然可以使用style="table-layout:fixed;word-wrap:break-word;word-break:break-all" 来解决这个问题,但有些时候会导致内容显示不完整而被隐藏了起来,并没有做到自动换行的效果. 于是偶就想写一个这样的函数来修补这个缺陷,这个函数很简单,但这里只是提供一种思路来解决这个问题. function fnAddBr(id, iPerLineLen){.

  • perl 指定长度并生成一个随机的DNA序列的脚本代码

    复制代码 代码如下: #!/bin/perl use strict;  use warnings; #进行定义  my @dna;  my $dna_length;  my $newbase;  my $i=0; print "please input the DNA length\n";  chomp($dna_length=<>); while($i<$dna_length)  {    #从四个碱基中随机选取一个    my(@nucleotides)=qw/A

  • Python和perl实现批量对目录下电子书文件重命名的代码分享

    经常会遇到下载的文件或电子书,名字中间都包含了一些网址信息,实际使用中由于名字太长不方便,下面的脚本使用正则表达式来对目录下的所有文件重命名: 例如: 修改前:[我们]Mac OS X for Unix Geeks[www.jb51.net].mobi 修改后:Mac OS X for Unix Geeks.mobi python代码如下: 复制代码 代码如下: import os import re def rename_dir(dir,regex,f):   if not os.path.i

  • 捕获input文本框内容改变事件的js代码

    网上一位老兄采用如此方法: readonly :是文本框不可输入. function dochg(){ document.getElementById("testId").value = "test" } setTimeout("dochg()",1000) function showValue(obj){ alert("changed value is " + obj); } [Ctrl+A 全选 注:如需引入外部Js需刷新

随机推荐