zoukankan      html  css  js  c++  java
  • 气相PLFA原始数据整合处理脚本

    很多仪器导出的数据格式可能不是包含着奇奇怪怪的编码,这给写正则脚本带来了很大困难 binmode IN, ':encoding(UTF-8)'  这个命令进行处理编码,保证输入和输出的正确。

    此外,因为需要遍历两层目录下的所有文件,发现了glob这个强大的命令。

    use strict;
    use List::Util qw/sum/; #为了求和
    #use warnings; #忽略警告吧,囧
    
    my @dir;
    my @myfiles;
    open OUT, ">result.txt";
    binmode OUT, ':encoding(UTF-8)';
    #opendir (DIR, "./") or die "cannot open this directory";
    my @ids = (1..37);
    print OUT "ID    ".join("    ",@ids)."    sum\n";
    
    my $dir = ("./*/*/report.txt");
    
    my @files = glob ($dir);
    
    foreach my $file (@files){
        open IN, "<".$file;
        binmode IN, ':encoding(UCS-2LE)'; #奇奇怪怪的编码,唉
        my @lines = <IN>; 
        chomp @lines;
        my $ID = $lines[1];#这种编码的正则无能为力,只好直接提取第二行了
        chop $ID; #chomp在此处无效,可能是因为编码问题,所以选择chop
        my @array = ();
        print OUT $ID."    ";
        foreach (@lines){
            if ($_ =~ m/\s+(\d+\.\d+)\s+(\d{1,2})\s+$/ ){
                $array[$2-1] = $1;
            }elsif($_ =~ m/\s+(-)\s+(\d{1,2})\s+$/ ){
                $array[$2-1] = $1;
            }
        }
        my $sum = sum(@array);
        $array[37] = $sum; #第38列为求和,带有奇怪编码的汉字太难搞定了
        print OUT join("    ", @array)."\n";
        
        close(IN);
    
    }
    
    print $#files;
    close(OUT);
  • 相关阅读:
    无休止的项目,何来快感!!
    [From HTTP to AWS][4]使用LibcURL with OpenSSL support
    [From HTTP to AWS][2]Analyze TCP/IP Packets
    The setup of Piaoger
    从Adobe Subscription editions扯到破坏性创新
    SaaS窘境[欣赏然后翻译之]
    Algodoo,很棒的物理引擎
    浮水法POJ2528
    蛤的旅行
    题解 CF712A 【Memory and Crow】
  • 原文地址:https://www.cnblogs.com/liulele/p/10298866.html
Copyright © 2011-2022 走看看