大家好,请教大家一个关于数据分类处理的问题,请大家帮我看看哦。
时间:2011-03-18
来源:互联网
大家好,偶最近遇到一个关于数据分类的问题,一直没有做成,请高手帮我指点一下。
整个操作大致如下:
我需要从一个报表中,提取2类数据,再把它们分类整理好。
提取数据的工作,我已经用perl写成功了,生成的文件,格式如下:
end:sdad/wea/window/csdw/wee[90] start: qid/wqw/reg[1]/32/ds
end:sdad/wea/window/brs/ess[42] start: qid/wqw/reg[2]/ds/rea
end:sdad/wea/window/asw/wwe[56] start: qid/wqw/reg[2]/ef/ew
end:sdad/wea/window/bbs/wer[23] start: qid/wqw/reg[1]/qsc/rea
end:sdad/wea/eew/asw/wwe[79] start: qid/wqw/reg[1]/ece/ppo
end:sdad/wea/window/dee/wqde[81] start: qid/wqw/awe/ece/rea
end:sdad/wea/window/asw/wwe[69] start: qid/wqw/caew/dse/rea
end:sdad/wea/window/rte/dfd[42] start: qid/wqw/reg[1]/ece/xew
end:sdad/wea/window/asw/wwe[42] start: qid/wqw/reg[3]/ewc/fgh
end:sdad/wea/ewdsw/tee/jyt[42] start: qid/wqw/reg[2]/ece/rea
……
但在分类时候,一直没成功。
分类要求如下:
1.凡是end:后那个参数中,没有window的,一概无视。
2.end:后有window的,按start后的参数进行分类:
有reg[1]的一类,有reg[2]的一类,有reg[3]的一类,以此类推,最后是没reg的一类。
出来后的文件,预计形式是这样的:
1.start:qid/wqw/reg[1]/
end:sdad/wea/window/csdw/wee[90]
end:sdad/wea/window/bbs/wer[23]
end:sdad/wea/window/rte/dfd[42]
2. start: qid/wqw/reg[2]/ds/rea
end:sdad/wea/window/brs/ess[42]
end:sdad/wea/window/asw/wwe[56]
3.start:qid/wqw/reg[3]/ewc/fgh
end:sdad/wea/window/asw/wwe[42]
……
N. start: qid/wqw/awe/ece/rea
end:sdad/wea/window/dee/wqde[81]
start: qid/wqw/caew/dse/rea
end:sdad/wea/window/asw/wwe[69]
原来我尝试了用散列,用数组,效果一直不理想
一直没搞定,怎么把相关的进行分类,并按从1到N,进行排序打出。
希望各位前辈,能够指点我一下,这个分类问题,我该怎么解决呢?
整个操作大致如下:
我需要从一个报表中,提取2类数据,再把它们分类整理好。
提取数据的工作,我已经用perl写成功了,生成的文件,格式如下:
end:sdad/wea/window/csdw/wee[90] start: qid/wqw/reg[1]/32/ds
end:sdad/wea/window/brs/ess[42] start: qid/wqw/reg[2]/ds/rea
end:sdad/wea/window/asw/wwe[56] start: qid/wqw/reg[2]/ef/ew
end:sdad/wea/window/bbs/wer[23] start: qid/wqw/reg[1]/qsc/rea
end:sdad/wea/eew/asw/wwe[79] start: qid/wqw/reg[1]/ece/ppo
end:sdad/wea/window/dee/wqde[81] start: qid/wqw/awe/ece/rea
end:sdad/wea/window/asw/wwe[69] start: qid/wqw/caew/dse/rea
end:sdad/wea/window/rte/dfd[42] start: qid/wqw/reg[1]/ece/xew
end:sdad/wea/window/asw/wwe[42] start: qid/wqw/reg[3]/ewc/fgh
end:sdad/wea/ewdsw/tee/jyt[42] start: qid/wqw/reg[2]/ece/rea
……
但在分类时候,一直没成功。
分类要求如下:
1.凡是end:后那个参数中,没有window的,一概无视。
2.end:后有window的,按start后的参数进行分类:
有reg[1]的一类,有reg[2]的一类,有reg[3]的一类,以此类推,最后是没reg的一类。
出来后的文件,预计形式是这样的:
1.start:qid/wqw/reg[1]/
end:sdad/wea/window/csdw/wee[90]
end:sdad/wea/window/bbs/wer[23]
end:sdad/wea/window/rte/dfd[42]
2. start: qid/wqw/reg[2]/ds/rea
end:sdad/wea/window/brs/ess[42]
end:sdad/wea/window/asw/wwe[56]
3.start:qid/wqw/reg[3]/ewc/fgh
end:sdad/wea/window/asw/wwe[42]
……
N. start: qid/wqw/awe/ece/rea
end:sdad/wea/window/dee/wqde[81]
start: qid/wqw/caew/dse/rea
end:sdad/wea/window/asw/wwe[69]
原来我尝试了用散列,用数组,效果一直不理想
一直没搞定,怎么把相关的进行分类,并按从1到N,进行排序打出。
希望各位前辈,能够指点我一下,这个分类问题,我该怎么解决呢?
作者: xixizhihua 发布时间: 2011-03-18
本帖最后由 珞水的大叔 于 2011-03-18 11:22 编辑
首先,请楼主不要中文逗号和英文逗号混用
不过你的思路已经很清晰了
下次记得要先把自己的代码贴出来啊
复制代码
首先,请楼主不要中文逗号和英文逗号混用
不过你的思路已经很清晰了
下次记得要先把自己的代码贴出来啊
- #!/usr/bin/perl
- use strict;
- use warnings;
-
- my %result1; #存放有reg[N]的
- my @result2; #存放没有reg[N]的
- while(<DATA>){
- next if $_ !~ /^\s*end.+?(\/window\/).+?\bstart/;
- s/^\s+//;
- s/\s+$//;
- my @tmp = split /\s+(?=start)/;
- if($tmp[1] =~ /(start: qid\/wqw\/reg\[\d+\])/){
- push @{$result1{$1}},$tmp[0];
- }
- else{
- push @result2,($tmp[1],$tmp[0]);
- }
- }
-
- for (sort keys %result1){
- print "$_\n".(join "\n",@{$result1{$_}})."\n\n";
- }
-
- print "\n\n";
- print "$_\n" for @result2;
- __DATA__
- end:sdad/wea/window/csdw/wee[90] start: qid/wqw/reg[1]/32/ds
- end:sdad/wea/window/brs/ess[42] start: qid/wqw/reg[2]/ds/rea
- end:sdad/wea/window/asw/wwe[56] start: qid/wqw/reg[2]/ef/ew
- end:sdad/wea/window/bbs/wer[23] start: qid/wqw/reg[1]/qsc/rea
- end:sdad/wea/eew/asw/wwe[79] start: qid/wqw/reg[1]/ece/ppo
- end:sdad/wea/window/dee/wqde[81] start: qid/wqw/awe/ece/rea
- end:sdad/wea/window/asw/wwe[69] start: qid/wqw/caew/dse/rea
- end:sdad/wea/window/rte/dfd[42] start: qid/wqw/reg[1]/ece/xew
- end:sdad/wea/window/asw/wwe[42] start: qid/wqw/reg[3]/ewc/fgh
- end:sdad/wea/ewdsw/tee/jyt[42] start: qid/wqw/reg[2]/ece/rea
作者: 珞水的大叔 发布时间: 2011-03-18
谢谢大叔:)
我下次一定会注意的。
我下次一定会注意的。
作者: xixizhihua 发布时间: 2011-03-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28