0

へぇ..句読点の消し方..実はもう使ってみ[: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 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 tiga belas tahun sembilan belas sembilan puluh lapan 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 に答える