Perl如何统计相邻词对出现频次并将结果输出到文件
Perl相邻词对统计与文件输出实现方案
你原有的相邻词对匹配正则逻辑可以正常工作,只需要补充哈希计数、文件写入两个模块就能满足需求,完整可直接运行的代码如下:
use strict; use warnings; # 待处理文本,若需要处理整个文本文件,可替换为文件读取逻辑,将所有待处理内容存入该变量即可 my $content = "The quick brown fox jumps over the lazy dog. The quick brown fox runs fast. The quick brown fox eats meat."; # 初始化存储词对计数的哈希 my %wordpair_count; # 遍历匹配所有相邻词对,同步完成计数 while ($content =~ /(\w+)\s(?=(\w+\b))/g) { my $current_pair = "$1 $2"; $wordpair_count{$current_pair} += 1; } # 打开输出文件,文件名为wordpair_count.txt,和脚本存放在同一目录 open(my $out_handle, '>', 'wordpair_count.txt') or die "打开输出文件失败: $!"; # 遍历统计结果,同时输出到控制台和写入文件 for my $pair (keys %wordpair_count) { my $result_line = "$pair: $wordpair_count{$pair}\n"; print $result_line; print $out_handle $result_line; } # 关闭文件句柄 close($out_handle);
关键说明
- 脚本开头加入
use strict;和use warnings;是Perl开发的通用好习惯,能自动帮你排查变量未定义、拼写错误等常见低级问题,适合初学者使用。 - 如果你需要处理外部文本文件而非固定字符串,只需要加几行读取文件的代码,把所有文本内容拼接到
$content变量中即可,匹配和计数逻辑不需要修改。 - 代码中
open操作后附带的die是错误处理逻辑:如果因为权限不足、路径错误等原因无法创建/写入输出文件,会直接在控制台打印明确错误信息,不会出现静默运行、没有输出的问题。 - 运行脚本后,同目录下生成的
wordpair_count.txt内容和控制台打印内容完全一致,格式为你预期的「词对: 出现次数」,比如上述示例代码运行后,The quick对应的统计值就是3,和你给出的期望输出示例匹配。
内容的提问来源于stack exchange,提问作者7akeoverforce
相关产品推荐
相关产品推荐

