免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5226 | 回复: 6
打印 上一主题 下一主题

[求助]有关两个csv文件的比较----【已解决 谢谢】 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-20 10:58 |只看该作者 |倒序浏览
本帖最后由 scrit 于 2010-09-26 17:31 编辑

我现在要比较两个CSV文件,我是利用Text::CSV_XS模块来比较的 我的代码如下
  1. #!/usr/bin/perl
  2. use Text::CSV_XS;
  3. my $csvfile="file1.csv";
  4. my $newfile="file2.csv";
  5. open $old, "<", $csvfile;
  6. open $new, "<", $newfile;
  7. open DIFF, ">", "diff.txt";
  8. my $csvold = Text::CSV_XS->new ({ binary => 1, eol => $/ });
  9. my $csvnew = Text::CSV_XS->new ({ binary => 1, eol => $/ });
  10. my $count=0;
  11. while(my $rowold=$csvold->getline($old))
  12. {
  13. my @item1 = @$rowold;
  14. my @item2;
  15. my @tt;
  16. my $line2;
  17. my @t = @item1;
  18. my $line = shift @item1;
  19. $line = shift @item1;
  20. # print DIFF "$line\t";
  21. while(my $rownew=$csvnew->getline($new))
  22.   {
  23.    @item2 = @$rownew;
  24.    @tt = @item2;
  25.    $line2 = shift @item2;
  26.    $line2 = shift @item2;
  27. #  print DIFF "$line2\n";
  28.   if($line == $line2)
  29.     {

  30.     $count=$count + 1;
  31.      @t="";
  32.      $line="";
  33.     last;
  34.     }
  35.   }
  36. if($line =~ /^\w+/)
  37.   {
  38.   print DIFF "@t\n";
  39.   }

  40. }
复制代码
我的要比较的两个文件在附件里
我是根据CSV文件中的第二列数据进行比较  把FILE1中有的,而FILE2中没有的行提取出来,但是始终不能做到  有没有高人帮我解答下啊?谢谢啦

file1andfile2.rar

13.75 KB, 下载次数: 38

论坛徽章:
0
2 [报告]
发表于 2010-09-20 11:28 |只看该作者
感觉你的代码写的有点乱,先理清头绪再写吧~

看下这都写重复了,还反复的从一个数组到另一个数组,看不明白啥意图~

@item2 = @$rownew;

   @tt = @item2;

   $line2 = shift @item2;

   $line2 = shift @item2;

求职 : 技术支持/维
论坛徽章:
0
3 [报告]
发表于 2010-09-20 11:36 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2010-09-20 11:47 |只看该作者
回复 2# x9x9


    这是因为我需要根据csv中的第二列数据来匹配的  所以执行了两次

论坛徽章:
0
5 [报告]
发表于 2010-09-20 11:48 |只看该作者
回复 3# 99超人


    两个文件中的 其他列的数据会有不同的 ,如果直接按行匹配是不行的, 第一列是所引字段,第二列才是比较字段的

论坛徽章:
0
6 [报告]
发表于 2010-09-20 12:29 |只看该作者
HASH,用第二列作为HASH的KEY。

论坛徽章:
0
7 [报告]
发表于 2010-09-20 13:35 |只看该作者
  我的程序这么混乱吗?郁闷,超人的方法很好
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP