perl提取表格数据

#!/usr/bin/perl -w
# author by luyi
use strict;


my $src_data="/export/remotedata/wget_html_data.txt";  #获取的html数据存入此文件中
my $result="/export/remotedata/get_data_173.txt";      #抽取的最终结果数据存入此文件中
my $info="/tmp/wget_data_173.info";                    #日志文件
my $address="http://api.173.com:8080/public/agentList";
my $cmd=qx(which wget);
chomp($cmd);


unlink $src_data if (-f $src_data);
unlink $result if (-f $result);


qx($cmd $address -a $info -O $src_data);
##print "$cmd $address -a $info -O $src_data";
##/usr/bin/wget http://api.173.com:8080/public/agentList -a a.txt -O b.txt


if(! -s $src_data){
        print "Get html file : $src_data error!\n";
        print INFO "Get html file : $src_data error!\n";
        exit;
}


open(INFO,">>$info") or die "can't open $info $!";
open(SD,"$src_data") or die "can't open $src_data $!";
open(RTF,">>$result") or die "can't open $result $!";


my $flag=0;
my $line_count=0;                            #html的<table></table>中包含的<tr>数
my $td_count=0;                              #html的<table></table>中包含的<td>数
my @tds;                                     #保存<td></td>之间的内容


while(my $line=<SD>){
        chomp($line);


        if ($line =~ /\<table[^>]*\>/){
        $flag=1;
        }elsif($line =~ /\<\/table\>/){
                # $flag = 0;
                last;
        }


        if ($flag == 0){
                next;
        }else{
                if($line =~ /\<tr[^>]*\>/){
                        $line_count += 1;
                        next;
                }elsif($line =~ /\<td\>(.+)\<\/td\>/){
                        $td_count += 1;
                        push @tds,$1;
                        next;
                }
             }


        }


#print "@tds\n";
#print "$line_count\t$td_count\n";


my $cols = $td_count / $line_count; #计算每个<tr>中包含的<td>数,即每行有多少列
my $cnt = 1;                        #划分行数的标记符号


foreach(@tds){
        my $d = $cnt % $cols;


        if($d == 0){                #读到一行的结尾列,换行
#              print "$_\n";
               print RTF "$_\n";
        }else{                      #否则,列与列之间用\t分割
#              print "$_\t";
               print RTF "$_\t";
        }
        $cnt += 1;
}


close(SD);
close(RTF);
close(INFO);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提取TCGA临床数据,可以使用Perl脚本来实现。首先,我们需要获取TCGA临床数据的存储位置和格式。 在Perl脚本中,可以使用以下步骤来提取TCGA临床数据: 1. 需要先下载TCGA临床数据的存储文件,可以从TCGA官方网站或相关数据库中获取。这些文件通常以文本格式(如CSV或TSV)存储。 2. 在Perl脚本中,可以使用文件操作函数来打开并读取所下载的临床数据文件。可以使用open函数打开文件句柄,并使用指定的读取模式将文件内容读取到变量中。 3. 在读取数据文件后,可以使用字符串处理函数和正则表达式来解析数据。根据数据的格式,可以使用split函数或正则表达式来将每行数据分割成字段,并将这些字段存储到适当的变量中。 4. 根据需求,可以使用条件语句、循环和其他Perl控制结构来筛选和处理数据。例如,可以根据某个特定的临床变量或病例特征来过滤数据,并将符合条件的数据存储到新的变量或文件中。 5. 在对数据进行处理和筛选后,可以根据具体需求选择合适的输出方式。可以将处理后的数据输出为文本文件,也可以将其存储到数据库中,或者进行其他进一步的分析。 综上所述,使用Perl脚本可以实现对TCGA临床数据提取和处理。具体的脚本代码会根据数据格式和需求的不同而有所差异,上述步骤仅提供了一个基本的脚本框架,需要根据具体的情况进行相应的调整和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值