返回列表 发帖

[问题求助] Perl怎样把一个文件中的内容行列互置?

原文件a.txt:
1 2 3
a b c

希望得到的结果:
1 a
2 b
3 c

Perl?这个,你问错地方了把?

TOP

这里不就是Perl版块吗,不在这里,那该去哪儿呀?!
我发现这个论坛里面思维诡异的人还真是不少呢!

TOP

这里不就是Perl版块吗,不在这里,那该去哪儿呀?!
我发现这个论坛里面思维诡异的人还真是不少呢!
DAIC 发表于 2011-6-11 09:46

那个人可能刚来…… 不管……  做题ing
[url=][/url]

TOP

那个人可能刚来…… 不管……  做题ing
523066680 发表于 2011-6-11 10:41

恩,我也刚来。

TOP

本帖最后由 523066680 于 2011-6-11 11:06 编辑

空格要切分吗 ,我按逐字符处理了
open READ,"<src.txt";
foreach (<READ>) {
$n=0;
for $i (0..(length($_)-1)) {
$arr[$n++].=substr($_,$i,1);
}
}
close READ;
foreach (@arr) {
print "$_ \n";
}
<STDIN>;COPY
输出结果
1a

2b

3c
[url=][/url]

TOP

恩,我也刚来。
Demon 发表于 2011-6-11 10:51

你怎么现在才来
[url=][/url]

TOP

6# 523066680


你这样处理之后就变成1列了,不是我希望的结果。

TOP

这个好像是chinaunix上的,有人问过,贴过来了(我忘了原帖在哪了,抱歉)
my @matrix;
my $max_len = 0;
while(<DATA>){
  chomp;
   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
a b cCOPY

TOP

9# sxw


非常感谢!
看来你们地球上除了那一两个人之外,还是有其他人会Perl的的,我很欣慰。

TOP

本帖最后由 523066680 于 2011-6-11 15:22 编辑
6# 523066680


你这样处理之后就变成1列了,不是我希望的结果。
DAIC 发表于 2011-6-11 13:54

哈 ,叠加的时候增加一个空格,就两列了。看样子这位是纯粹出题,不投入啊。
[url=][/url]

TOP

哈 ,叠加的时候增加一个空格,就两列了。看样子这位是纯粹出题,不投入啊。
523066680 发表于 2011-6-11 15:21

我看根本就是什么都不懂嘛

TOP

本帖最后由 523066680 于 2011-6-11 16:54 编辑
我看根本就是什么都不懂嘛
Demon 发表于 2011-6-11 15:25

呀哈,作为一名外贸人员,这点业余消遣,别人认为懂不懂无所谓啦~
(这句替换掉了。他人引用的内容无法替换,就成为心浮气躁的证据吧。)
open READ,"<src.txt";
foreach (<READ>) {
        $n=0;
        for $i (0..(length($_)-1)) {
if (substr($_,$i,1) ne " ") {
                $arr[$n++].=substr($_,$i,1)." ";
}
        }
}
close READ;
foreach (@arr) {
        print "$_\n";
}
<STDIN>;COPY
[url=][/url]

TOP

呀哈,作为一名外贸人员,这点业余消遣,别人认为懂不懂无所谓啦~
你月薪多少啊?能人,很能说会道啊。 你跟bccn那个挑衅的,没法比。
523066680 发表于 2011-6-11 15:39

你先搞清楚我在说谁好么。

TOP

11# 523066680


我是初学者,别跟我一般见识呀。
不过你的方法不能处理这种情况:
1 1 1
22 22 22

TOP

返回列表