用于处理CSV文件的Perl脚本,聚合分布在多个记录上的属性
发布时间:2020-12-15 23:26:59 所属栏目:大数据 来源:网络整理
导读:抱歉这个模糊的问题,我正在努力思考如何更好地说出来! 我有一个看起来像这样的CSV文件,只有更大的: 550672,1656372,1766153,1550672,2656372,2868194,2766151,2550672,3868179,3868194,3550672,4766153,4 第一列中的值是ID号,第二列可以描述为属性(因为缺
抱歉这个模糊的问题,我正在努力思考如何更好地说出来!
我有一个看起来像这样的CSV文件,只有更大的: 550672,1 656372,1 766153,1 550672,2 656372,2 868194,2 766151,2 550672,3 868179,3 868194,3 550672,4 766153,4 第一列中的值是ID号,第二列可以描述为属性(因为缺少更好的单词……). ID号550672具有属性1,2,3,4.任何人都可以指出我如何开始解决如何生成所有ID号码的字符串?我理想的输出将是一个新的csv文件,看起来像: 550672,1;2;3;4 656372,1;2 766153,1;4 等等 我非常喜欢Perl婴儿(只有3天大!)所以我真的很欣赏方向,而不是直接的解决方案,我决心学习这些东西,即使它花了我余下的时间!我尽我所能尽力调查它,虽然我认为我已经因为不知道该寻找什么而陷入困境.我能够读入并解析CSV文件(我甚至可以删除重复的值!)但是这真的是我为它丢弃的地方.任何帮助将不胜感激! 解决方法
我认为最好是我为你提供工作计划而不是一些提示.提示只能带你到目前为止,如果你花时间了解这段代码,它将为你提供良好的学习体验
在处理CSV数据时最好使用 use strict; use warnings; use Text::CSV; my $csv = Text::CSV->new; open my $fh,'<','data.txt' or die $!; my %data; while (my $line = <$fh>) { $csv->parse($line) or die "Invalid data line"; my ($key,$val) = $csv->fields; push @{ $data{$key} },$val } for my $id (sort keys %data) { printf "%s,%sn",$id,join ';',@{ $data{$id} }; } 产量 550672,1;2 766151,2 766153,1;4 868179,2;3 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |