• 气相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);
  • 相关阅读:
    Python 变量回收
    centos服务器内部开启端口
    mysql启动不起来汇总
    torch中DataLoader加载字典
    torch.meshgrid函数
    如何配置好python脚本的命令行参数
    git忽略文件,.gitignore配置
    jupyter如何解析命令行参数argv
    怎么制作虚拟环境的yaml
    如何提高matplotlib在jupyter中作图的分辨率
  • 原文地址:https://www.cnblogs.com/liulele/p/10298866.html
Copyright © 2020-2023  润新知