【问题标题】:Trouble handling data from parsed file处理解析文件中的数据时遇到问题
【发布时间】:2010-12-22 17:59:17
【问题描述】:

我正在尝试从名为 mirdeep 的程序解析 html 输出文件。我已经将脚本提取到了将数据提取到数组数组中的地步,并且我正在尝试从相应的列中提取我想要的特定信息。出于某种奇怪的原因,我不断得到本不应该出现的输出。

基本上它应该从 mirdeep AND 检测到的 mirbase miRNA 和未检测到的 mirbase miRNA 中提取计数,但不理会统计表和新部分。

但是,当前为未检测部分提取的计数奇怪地存储不正确。 (由于它们的输出方式,一些所谓的“明星”和“成熟”数据被放在不同的行而不是在同一行,所以我试图重新组合它们。我相当肯定重组中的错误是问题的根源。

我正在使用打印语句检查我的进度,并注意到一些应该只有成熟计数或星计数的数据两者都有,并且第二个数字似乎总是等于行的成熟计数下面在html文件中,这对我来说没有意义。有人可以帮我找出问题所在吗?这是我第一次广泛使用面向对象的包,所以这里可能会有任何错误。

Heres the script and an example data file

刚刚创建了一个帐户,由于某种原因我无法安装 HTML::TableExtract;

运行 make install make test 已返回错误状态,不会强制安装 在此命令期间失败:GAAS/HTML-Parser-3.68.tar.gz :make_test NO MSISK/HTML-TableExtract-2.10.tar.gz : make_test NO

似乎我的 perl 安装很糟糕,我试图使用 bioperl,出于某种原因,流浪汉使用 fink,它安装了 perl 的 OWN 副本,而不是为 perl 的主系统安装提供库。有人知道如何使 fink 与主要的 MAC perl 安装(和 cpan)一起玩吗?当我使用主 perl 时,它可以工作,但我无法将模块安装到较旧的 fink perl,我必须使用它来访问 bioperl。是不是很棒。

附:对此最困扰我的事情是,它并没有发生在每个数据项上,而且它发生的主要是那些一开始就不应该获得两个值的数据项。它似乎有点伪随机,但具有确定性,因为它每次都发生在相同的项目上。

【问题讨论】:

  • 您需要双 tgz 脚本而不是使用 pastebin?
  • @Wooble:HTML 中有 5190 行 (673 KiB); Perl (15 KiB) 中的 613 行。使用 gzip 可能不是一个坏主意(尤其是对于 HTML)。两个已压缩的 tar 文件的 tar 的外部 gzip 可能不是必需的。相对路径名可能也不是必需的(但 GNU Tar 忽略了 '../' 部分)。
  • use strict; use warnings; 添加到代码顶部会发生什么?

标签: perl


【解决方案1】:

那是数百行代码。如果您只是想从 HTML 中提取表格,请使用 HTML::TableExtract

例如:

#!/usr/bin/perl

use strict; use warnings;
use HTML::TableExtract;
use YAML;

my $te = HTML::TableExtract->new(
    headers => [
        '',
        'novel miRNAs',
        'known miRBase miRNAs',
        '',
        '',
    ],
    slice_columns => 0,
);

$te->parse_file('t.html');

for my $table ( $te->tables ) {
    for my $row ( $table->rows ) {
        print Dump $row;
    }
}

【讨论】:

  • 有几个表,我仍然需要处理输出,我已经完成了那部分。这就是错误所在。 html 文件在设计时并未考虑解析,实际上格式不正确。 (我必须考虑到这一点,但这一切都已解决。)处理 2-dim 数组和我试图用来存储所有内容的数据结构时会发生错误。
  • 为每个特定的表格布局使用不同的HTML::TableExtract。我怀疑是否有人有足够的空闲时间来单步执行您的代码。只是浏览它让我有点头晕。首先,以明确定义的结构获取数据,然后您就可以将内容输出:这些是我们正在处理的计算机——数据结构中的内容就是输出的内容。
猜你喜欢
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 2019-10-29
  • 1970-01-01
  • 2019-06-17
  • 1970-01-01
相关资源
最近更新 更多