珀尔 |计算文本中单词的频率
计算字符串中所有单词的频率是任何编程语言的基本操作。可以计算文本中每个单词的频率并将其存储在哈希中以供进一步使用。在 Perl 中,我们可以通过首先将字符串中的单词拆分成一个数组来做到这一点。我们使用函数split //将字符串与 ' ' 分开。但是,两个单词之间的空格可以多于一个,因此使用/\s+/ 。这里\s+表示出现一次或多次 ' '。现在我们遍历通过将文本拆分为单词创建的新数组。这次我们在遍历数组时增加单词的计数。
- 示例:演示计算字符串中单词的频率
# Perl program for counting words in a string $actual_text = "GFG GeeksforGeeks GFG" ; # Creating words array by splitting the string @words= split / /, $actual_text; # Traversing the words array and # increasing count of each word by 1 foreach $word(@words) { $count{$word}++; } # Printing the word and its actual count foreach $word (sort keys %count) { print $word, " ", $count{$word}, "\n"; }
输出:
GFG 2 GeeksforGeeks 1
/\s+/ 和 / / 之间的区别: '\s+' 可用于带有一个或多个空格的分隔符。然而 // 只是用 1 个空格分隔单词。以下代码表示文本在两个单词之间有多个空格时的差异。
- 示例:演示 /\s+/ 和 / / 之间的区别
# Perl program for counting words in a string using / / # A text with two spaces rather than one $actual_text = "GeeksforGeeks welcomes you to GeeksforGeeks portal" ; # splitting the word with / / @words= split / /, $actual_text; # Counting the occurrence of each word foreach $word (@words) { $count{$word}++; } foreach $word (sort keys %count) { print $word, " ", $count{$word}, "\n"; }
输出:
1 GeeksforGeeks 2 portal 1 to 1 welcomes 1 you 1
注意:多余的“ ”也算作一个词。
使用命令 /\s+/ 来分割单词:这里的空格不会算作单独的单词。
- 例子:
#Perl program for counting words in a string using /\s+/ # Actual string with two spaces $actual_text = "GeeksforGeeks welcomes you to GeeksforGeeks portal" ; #S plitting the text using /\s+/ command @words = split /\s+/, $actual_text; # counting the occurrence of each word foreach $word (@words) { $count{$word}++; } foreach $word (sort keys %count) { print $word, " ", $count{$word}, "\n"; }
输出:
GeeksforGeeks 2 portal 1 to 1 welcomes 1 you 1
注意:多余的 ' ' 不计为一个单词。