作者fuwafuwa (此人已死,有事烧纸)
看板Perl
标题Re: [问题] 加入项目问题
时间Tue Jun 14 23:13:15 2011
首先要感谢abliou板友帮了我一个大忙。Q______Q
取之於perl板就要还之於perl板,
这篇是我把我的问题还有abliou板友给的解答code整理一下,
希望以後可供有类似问题的板友参考。
我的问题是我有一份data,如下所示:
1,2 1,14 1,7 1,16 1,82 1,123 1,95.....
2,34 2,1 2,75 2,156 2,6 2,87.....
3,54 3,12 3,7 3,24 3,41 3,12.......
我想在中间插进两个项目,一个项目是从1开始一直到该序列的最後一个「个数」,
另一个则是固定是1,结果是像这样:
1,1,1,2 1,2,1,14 1,3,1,7 1,4,1,16 1,5,1,82 1,6,1,123 1,7,1,95
2,1,1,34 2,2,1,1 2,3,1,75 2,4,1,156 2,5,1,6 2,6,1,87
3,1,1,54 3,2,1,12 3,3,1,7 3,4,1,24 3,5,1,41 3,6,1,12
abliou板友提供的code如下:
open (OUT, ">>output_file.txt");
open (FILE, "input_file.txt")||die "$!\n";
foreach $line(<FILE>)
{
for $element (split/\s+/,$line){
($cid,$transcation)=split',',$element ;
$tid = 0 unless $precid == $cid ;
$precid = $cid ;
$tid++ ;
print "$cid,$tid,1,$transcation " ;
}
}
跑过之後的确可以得出我想要的结果,
感谢abliou板友 Q___________Q
==
原先我没有把我要的结果表达好,所以abliou板友上篇code跑出来的结果会变成:
1,1,1,2 1,2,1,14 1,3,1,7 1,4,1,16 1,5,1,82 1,6,1,123 1,7,1,95
2,8,1,34 2,9,1,1 2,10,1,75 2,11,1,156 2,12,1,6 2,13,1,87
3,14,1,54 3,15,1,12 3,16,1,7 3,17,1,24 3,18,1,41 3,19,1,12
就是第一个位置数字变成2之後,第二个数字没有从1开始算起。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.41.152.126
※ 编辑: fuwafuwa 来自: 114.41.152.126 (06/14 23:15)
1F:推 abliou:重点是有比较快吗?快多少?? 06/15 00:06
2F:推 liyih:读大档案,foreach 改用 while 试试看 06/15 09:26
3F:→ fuwafuwa:快超多,本来要跑超过一个晚上(真的跑完时间未定),现在 06/15 11:31
4F:→ fuwafuwa:几分钟搞定 06/15 11:31