我有许多需要清理的 csv 文件(用空格替换标点符号并用其他单词替换某些单词......)我的 csv 文件有两列,在每一列中我用其他的替换一些字符。例如,在第一列中我替换 ; 由 xxx 并在第二列中替换;通过 ppp。为此,我在正则表达式中有两个 perl 代码,并在两个文件上切片一个 csv 文件:文件 1 = 第一列和文件 2 = 第二列,我运行第一列文件中第一列的代码.. .. 这根本不是一个好方法 :s !!!
那么我怎样才能有一个代码,其中第一个条件在 SAME 文件的第一列上运行,第二个条件在 SAME 文件的第二列上运行?
CSV 示例: http ://dbpedia.org/resource/Berenguer_de_Cru%C3%AFlles Berenguer de Cruïlles http://dbpedia.org/resource/Berenguer_de_Cru%C3%AFlles Berenguer de Cruïlles
IRI 是第一列,名称在第二列。
第一列的正则表达式中的 Perl 代码:
use strict;
use warnings;
open(IN,$ARGV[0]);
open(OUT,">RES_xxx.txt");
while(my $l = <IN>)
{
chomp($l);
$l =~ s/http:\/\//_/g;
$l =~ s/,/vvv/g;
$l =~ s/"/=/g;
$l =~ s/'/#/g;
$l =~ s/\(/ééé/g;
$l =~ s/\)/èèè/g;
$l =~ s/%/zzz/g;
print OUT "$l\n";
}
close(IN);
close(OUT);
第二列的正则表达式中的 Perl 代码:
#! usr/bin/perl
use strict;
use warnings;
open(IN,$ARGV[0]);
open(OUT,">RES_xxx.txt");
while(my $l = <IN>)
{
chomp($l);
$l =~ s/\(.+\)/ /g;
$l =~ s/'/ /g;
$l =~ s/"/ /g;
$l =~ s/,/ /g;
$l =~ s/\./ /g;
$l =~ s/:/ /g;
$l =~ s/;/ /g;
$l =~ s/!/ /g;
$l =~ s/\?/ /g;
$l =~ s/-/ /g;
$l =~ s/_/ /g;
$l =~ s/{/ /g;
$l =~ s/}/ /g;
$l =~ s/\+/ /g;
$l =~ s/=/ /g;
print OUT "$l\n";
}
close(IN);
close(OUT);
谢谢 !