0

Hye..如何删除标点符号?..实际上我已经尝试使用[:punct:]但它不适用于所有标点符号。它只是仅删除点....但其他标点符号仍然存在。我的任务是删除段落,删除标点符号并将所有文本更改为小写..

这是我的文本文件,即 snuker.txt

snuker berjaya menarik perhatian kbs.
19981230

Sam Chong"" kiri dan ooi Chin Kay memberi sumbangan besar kepada pembangunan snuker tanah air 
dengan merangkul pingat' emas sukan asia ti'ga belas tahun sembi'lan belas sembilan puluh lapan membuka 
lembaran baru snuker dan biliard tanah air apabila mereka kian disegani dan berjaya menukar tanggapan. 
negatif masyarakat tempatan terhadap sukan itu

这是我的 perl 脚本

#!/usr/bin/perl

use utf8;

if(! open(INPUT, '< snuker.txt'))
{
die "cannot opent input file: $!";
}


if(! open(OUTPUT, '> output.txt'))
{
    die "cannot open output file: $!";
}

select OUTPUT;

while($lines = <INPUT>)
{

    if($lines =~ s/[\s[:punct:]]+$/ /g)
    {
        print "$lines";
    }
}

close INPUT;
close OUTPUT;
close STDOUT;

输出是这样的......其他标点符号仍然有.......只是消失了......

snuker berjaya menarik perhatian kbs 19981230  Sam Chong"" kiri dan ooi Chin Kay memberi sumbangan besar kepada pembangunan snuker tanah air dengan merangkul pingat' emas sukan asia ti'ga belas tahun sembi'lan belas sembilan puluh lapan membuka lembaran baru snuker dan biliard tanah air apabila mereka kian disegani dan berjaya menukar tanggapan negatif masyarakat tempatan terhadap sukan itu 
4

3 回答 3

6

从正则表达式中删除美元符号。它使您的模式仅在行尾匹配。

于 2013-03-19T14:01:08.853 回答
0

尝试这样做:

#!/usr/bin/perl

use strict; use warnings;

$/ = ""; # read file per paragraphs

while (<>) {
    s/\p{Punct}//g;
    s/(?:\n|\s+)/ /g;
    print lc($_);
}

用法

perl script.pl < test_file >  output.txt

输出

snuker成功集团menarik perhatian KBS 19981230 SAM创基里丹OOI下巴凯memberi sumbangan大臣kepada pembangunan snuker丹那空气dengan merangkul pingat EMAS sukan亚洲迪迦贝拉斯tahun森美兰贝拉斯森美兰puluh LAPAN membuka lembaran巴鲁snuker丹biliard丹那空气apabila mereka KIAN disegani丹成功集团menukar tanggapan negatif masyarakat tempatan terhadap sukan itu

于 2013-03-19T14:01:18.300 回答
0
#!/usr/bin/perl

use utf8;

if(! open(INPUT, '< test_file'))
{
    die "cannot opent input file: $!";
}

if(! open(OUTPUT, '> output.txt'))
{
    die "cannot open output file: $!";
}

select OUTPUT;

while($lines = <INPUT>)
{
    $lines =~ s/\n/ /g;
    $lines =~ s/[[:punct:]]//g;
    print lc("$lines");
}

close INPUT;
close OUTPUT;
close STDOUT;
于 2013-03-19T14:01:57.887 回答