1

我正在解析一个 HTML 文件,其中包含以类似网格的方式关联的数据,并且即将完成。我以前认为需要删除所有空白行,但我没有注意到网格中的某些字段是空白的。我现在正在尝试使用 Tie::File 模块将文件存储在一个数组中,对其进行迭代,如果有三个连续的空行,我想插入一个我可以稍后操作的虚拟值,以便空行剥离不会改变我的数据结构。

到目前为止我尝试过的(文件约为 2 MB):

my @lines;
my $num = 0;
tie @lines, 'Tie::File', 'results.txt';
(tied @lines)->defer;

foreach (@lines)
{
    chomp $lines[$num];
    $num++;
    if ($lines[$num-1] =~ /^$/ && $lines[$num+1] =~ /^$/)
    {
        $lines[$num] = "null";
    }
}

(tied @lines)->flush;

untie @lines;

编辑:如何遍历数组并插入值,以便每行之间只有一个空格,以便我以后可以摆脱所有空行?

4

1 回答 1

1

如果我正确理解了您的问题(将三个连续的空行替换为“null”一词并在两侧各有一个空行),那么对您的文件内容进行操作的以下正则表达式可能会有所帮助:

use Modern::Perl;

my $htmlFile = do { local $/; <DATA> };

$htmlFile =~ s/(?<!\S)\n{3}/\nnull\n\n/g;

say $htmlFile;

__DATA__



A
B






C
D



E
F

Output:

null

A
B

null


null

C
D

null

E
F
于 2012-07-10T17:40:32.860 回答