我正在尝试创建一个程序,我在一个文件中读到了一堆文本.然后我拿出标点符号,然后我读了一个文件,里面有停用词.两者都被读入并放入数组中.我正在尝试将一般文本文件的数组放入哈希值.我不确定我做错了什么,但我正在努力.我想这样做,所以我可以生成有关重复多少单词和不重复多少单词的统计数据,但我必须取消停止单词等.
无论如何这里是我到目前为止我发表评论#WORKING ON MERGING ARRAY IN HASH,这是我工作的地方.我不认为我试图将数组放入哈希的方式是正确的,但我在网上查看了%hash {array} ="value"; 不编译.所以不知道怎么做.
谢谢,如果您对我有任何疑问,我会尽快回复.
#!/usr/bin/perl
use strict;
use warnings;
#Reading in the text file
my $file0="data.txt";
open(my $filehandle0,'<', $file0) || die "Could not open $file0\n";
my@words;
while (my $line = <$filehandle0>){
chomp $line;
my @word = split(/\s+/, $line);
push(@words, @word);
}
for (@words) {
s/[\,|\.|\!|\?|\:|\;]//g;
}
my %words_count; #The code I was told to add in this post.
$words_count{$_}++ for @words;
Run Code Online (Sandbox Code Playgroud)
接下来,我读到了另一个数组中的停用词.
#Reading in the stopwords file
my $file1 = "stoplist.txt";
open(my $filehandle1, '<',$file1) or die "Could not open $file1\n";
my @stopwords;
while(my $line = <$filehandle1>){
chomp $line;
my @linearray = split(" ", $line);
push(@stopwords, @linearray);
}
for my $w (my @stopwords) {
s/\b\Q$w\E\B//ig;
}
Run Code Online (Sandbox Code Playgroud)
关于Perl中哈希的一些注释...问题描述:
无论如何这里是我到目前为止我发表评论#WORKING ON MERGING ARRAY IN HASH,这是我工作的地方.我不认为我试图将数组放入哈希的方式是正确的,但我在网上查看了%hash {array} ="value"; 不编译.所以不知道怎么做.
首先,问问自己为什么要"将数组放入哈希".数组表示值列表,而哈希表示一组键值对.所以你必须定义键和值应该是什么.不仅对我们而言,对你而言.解释甚至简单的事情通常有助于更好地理解.
在这种情况下,你可能要算一个给定词多久$word你在发生@words阵列.这可以通过迭代所有单词并$count{$word}每次增加1来完成.这就是@ raina77ow在他的回答中所做的.这里重要的是,您正在访问单个哈希值,这些哈希值用$Perl中的标量sigil表示.所以,如果你有一个哈希命名%count,可以增加价值的关键'foo'通过
$count{foo}++;
Run Code Online (Sandbox Code Playgroud)
您在上面("在线查看"的结果%hash{array} = "value"没有意义.有三种有效的方法可以在哈希值中存储值:
通过为整个哈希分配一个偶数大小的列表来设置所有键值对:
%count = (hello => 42, world => 17);
Run Code Online (Sandbox Code Playgroud)
通过为已定义的键分配单个值(这是我们之前所做的),为给定键设置单个值:
$count{hello} = 42;
Run Code Online (Sandbox Code Playgroud)
使用所谓的散列片设置给定键列表的值列表:
@count{qw(hello world)} = (42, 17);
Run Code Online (Sandbox Code Playgroud)
注意这里使用的%符号:对于$单个(标量)值和值列表,混合键和值的hashy偶数大小的列表@.在您正在使用的示例中%,但在键大括号中定义一个数组{...}并分配一个标量值.
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |