比较两个文件的英文和日文数据
|
我被要求比较两个包含日语和英语信息的文件。我使用一种慢速的方法,读取两个文件并将它们放入两个数组中,然后使用while循环检查File_B的术语是否在File_A的行内。
File_A:
这是个男孩。
ハンカ
她是个女孩子。
我是男人
这个苹果很大。
那橘子很小。
File_B:
是一个
ハンカ
小
输出:
我是男人
这个苹果很大。
我写的程序效果很好。但是,我正在处理的文件非常大。如果我使用这样的循环,运行时间太慢了。我的朋友告诉我,我可以将文件放入散列中,它将更快地运行。我可以看到使用它的要点,但是我拥有的文件是随机的,而且File_B中的术语可以在File_A的任何部分中。以前的一些文章建议我可以使用File_A的行拆分,将行放入哈希并将其与File_B进行比较(也将File_B放在另一个哈希中)。但是,除了使用〜//来检查该行是否得到术语,我不知道该怎么做。
open(A_FILE, \"<\", \"FILE_A.txt\");
my(@a_lines) = <A_FILE>; # read file into list
close(A_FILE);
open(B_FILE, \"<\", \"FILE_B.txt\");
my(@b_lines) = <B_FILE>; # read file into list
my($b_lines);
close(B_FILE);
open(my $out, \">\", \"Useful.txt\") or die \"Can\'t open Useful.txt: $!\";
$number = @b_lines;
foreach $a_line (@a_lines) # loop thru list
{
$found = 0;
my $sentence = $a_line;
$i = 0;
chomp($sentence);
while (($i <= $number-1) and ($found == 0)){
chomp($b_lines[$i]);
if ($sentence =~ /$b_lines[$i]/){
$found = 1;
}
$i++;
}
if ($found == 1) {
print $out $sentence.\"\\n\";
}
}
没有找到相关结果
已邀请:
2 个回复
寇剩
搜索时间。
结乳