Regex 删除停止字并保存新文件Perl
我创建了一个Perl文件,以加载到一个“停止字”数组中 然后我将包含“.ner”文件的目录加载到其中。 每个文件被打开,每个单词被分割并与停止文件中的单词进行比较。 如果该单词与该单词匹配,则会将其更改为“”(无内容并被删除) 然后我将文件复制到另一个位置。因此,我可以区分有停止词的文件和没有停止词的文件。 但是这是否会将文件更改为现在不包含停止字,还是会恢复为原始文件Regex 删除停止字并保存新文件Perl,regex,perl,split,stop-words,Regex,Perl,Split,Stop Words,我创建了一个Perl文件,以加载到一个“停止字”数组中 然后我将包含“.ner”文件的目录加载到其中。 每个文件被打开,每个单词被分割并与停止文件中的单词进行比较。 如果该单词与该单词匹配,则会将其更改为“”(无内容并被删除) 然后我将文件复制到另一个位置。因此,我可以区分有停止词的文件和没有停止词的文件。 但是这是否会将文件更改为现在不包含停止字,还是会恢复为原始文件 #!/usr/bin/perl #use strict; #use warnings; my @stops; my @fi
#!/usr/bin/perl
#use strict;
#use warnings;
my @stops;
my @file;
use File::Copy;
open( STOPWORD, "/Users/jen/stopWordList.txt" ) or die "Can't Open: $!\n";
@stops = <STOPWORD>;
while (<STOPWORD>) #read each line into $_
{
chomp @stops; # Remove newline from $_
push @stops, $_; # add the line to @triggers
}
close STOPWORD;
$dirtoget="/Users/jen/temp/";
opendir(IMD, $dirtoget) || die("Cannot open directory");
@thefiles= readdir(IMD);
foreach $f (@thefiles){
if ($f =~ m/\.ner$/){
print $f,"\n";
open (FILE, "/Users/jen/temp/$f")or die"Cannot open FILE";
if ( FILE eq "" ) {
close FILE;
}
else{
while (<FILE>) {
foreach $word(split(/\|/)){
foreach $x (@stops) {
if ($x =~ m/\b\Q$word\E\b/) {
$word = '';
copy("/Users/jen/temp/$f","/Users/jen/correct/$f")or die "Copy failed: $!";
close FILE;
}
}
}
}
}
}
}
closedir(IMD);
exit 0;
#/usr/bin/perl
#严格使用;
#使用警告;
我的@stops;
我的@文件;
使用文件::复制;
打开(STOPWORD,“/Users/jen/stopWordList.txt”)或死“无法打开:$!\n”;
@停止=;
while()#将每一行读入$_
{
chomp@stops;#从中删除换行符$_
按@stops,$\u;#将该行添加到@triggers
}
关闭停止字;
$dirtoget=“/Users/jen/temp/”;
opendir(IMD,$dirtoget)| | die(“无法打开目录”);
@thefiles=readdir(IMD);
foreach$f(@thefiles){
如果($f=~m/\.ner$/){
打印$f,“\n”;
打开(文件“/Users/jen/temp/$f”)或死“无法打开文件”;
如果(文件eq“”){
关闭文件;
}
否则{
而(){
foreach$word(拆分(/\\124;/)){
外汇兑换$x(@站){
如果($x=~m/\b\Q$word\E\b/){
$word='';
复制(“/Users/jen/temp/$f”,“/Users/jen/correct/$f”)或死“复制失败:$!”;
关闭文件;
}
}
}
}
}
}
}
closedir(IMD);
出口0;
我正在拆分和比较的文件格式如下:
'<title>|NN|O Woman|NNP|O jumped|VBD|O for|IN|O life|NN|O after|IN|O firebomb|NN|O attack|NN|O -|:|O National|NNP|I-ORG News|NNP|I-ORG ,|,|I-ORG Frontpage|NNP|I-ORG -|:|I-ORG Independent.ie</title>|NNP|'
“| NN | O Woman | NNP | O跳跃| VBD | O for | IN | O life | NN | O firebomb | NN | O攻击| O-| | | O国家| NNP | I-ORG新闻| NNP | I-ORG | | I-ORG | | I-ORG | | I-ORG | | I-ORG | | I-ORG | I-ORG | | | I-ORG | I
我是否应该概述单词的拆分位置,即:split(/|/)?没有参数的
split
相当于split(“”,$)
由于希望在|
上拆分行,因此需要执行以下操作:
split/\|/
您应始终使用:
严格使用;
使用警告
使用三个参数打开并测试打开是否失败
如前所述,codaddict不带参数的拆分相当于拆分(“”,$。
这是一个完成这项工作的建议(据我所知,你想要什么)
#/usr/bin/perl
严格使用;
使用警告;
使用5.10.1;
我的@stops=qw(把你的停止词放在这里);
我的%stops=map{$\=>1}@stops;
我的文件;
my$path='/Users/jen/temp/';
my$out=$path.outputfile';
打开我的$fout,“>”,$out或die“无法打开用于写入的$out:$!”;
foreach my$文件(@thefiles){
下一步除非$file=~/\.ner$/;
打开我的$fh,“@jenniem001
open FILE, ("<$fh")||die("cant");undef $/;my $whole_file = <FILE>;foreach my $word (@words){$whole_file=~s/\b\Q$word\E\b//ig;}open FILE (">>$duplicate")||die("cant");print FILE $whole_file;
打开文件,(“>$duplicate”)| | die(“cant”);打印文件$whole|u文件;
这将从您的文件中删除stops并创建一个副本。只需调用give$duplicate a name:)这段代码是否可以编译?它似乎缺少一些结束括号。请添加完整代码并指定更好一点的问题是什么?目前似乎没有任何地方写入更改的内容。@superflin完整代码是上面关于格式的问题很抱歉:-)我有#!/usr/bin/perl使用strict;使用warnings;使用5.10.1;
在我的代码中,我只是不认为把它放在我的问题中是相关的。写在一个新文件中怎么样?或者附加这个文件,我想现在我只是将原始文件复制到另一个文件夹,但我想复制文件文件减去停止字后,放入新文件夹。?!
open FILE, ("<$fh")||die("cant");undef $/;my $whole_file = <FILE>;foreach my $word (@words){$whole_file=~s/\b\Q$word\E\b//ig;}open FILE (">>$duplicate")||die("cant");print FILE $whole_file;