0

私は仕事にSeleniumを使用しており、「//ul」からいくつかのデータを抽出しましたが、残念ながらこのデータには改行が含まれています.chomp()関数を使用してこれを削除しようとしました(CSVのファイルに書き込む必要があるため)が、コードの一部は次のとおりです。

open (INFO, '>>file.csv') or die "$!";  
print INFO ("codice\;descrizione\;prezzo\;URLFoto\n");
my $sel = Test::WWW::Selenium->new( host => "localhost", 
                                    port => 4444, 
                                    browser => "*chrome", 
                                    browser_url => "http://www.example.com/page.htm" );
$sel->open_ok("/page.htm");
$sel->click_ok("//table[2]/tbody/tr/td/a/img");
$sel->wait_for_page_to_load_ok("30000");
my $descrizione = $sel->get_text("//ul");
my $prezzo = $sel->get_text("//p/font");
my $codice = $sel->get_text("//p/font/b");
my $img = $sel->get_attribute ("//p/img/\@src");
chomp ($descrizione);
print INFO ("$codice\;$descrizione\;$prezzo\;$img\n");
$sel->go_back_ok();

# Close file
close (INFO);

しかし、出力は次のとおりです。

Art. S500 Set Yoga "Siddhartha";Idea regalo ?SET YOGA Siddhartha? Elegante scatola in cartone lucido contenente:  

 2 mattoni in legno naturale mis. cm 20 x 12,5 x 7

 1 cinghia in cotone mis. cm 4 x 235  

 1 stuoia in cotone mis. cm 70 x 170    

 1 manuale di introduzione allo yoga stampato

Tutto rigorosamente realizzato con materiali natural;€ 82,50;../images/S500%20(Custom).jpg
4

3 に答える 3

1

chomp文字列または文字列のセットの末尾から、プラットフォーム固有の行末文字シーケンスを削除します。

あなたの場合、改行やキャリッジリターンが埋め込まれた単一の文字列があるようです。したがって、可能性のある行末のシーケンスを他の何か、たとえば単一のスペース文字に置き換えたいと思うかもしれません。その場合は、次のようにします。

$descrizione =~ s/[\r\n]+/ /g;
于 2012-04-06T18:01:53.003 に答える
0

すべての垂直空白を置き換えたい場合、Perl にはそのための特殊な文字クラスのショートカットがあります。

 use v5.10;
 $descrizione =~ s/\v+/ /g;
于 2012-04-06T21:02:56.683 に答える
-1

外す時もこれを使い\rます。

$descrizione =~ s#[\r\n]+\z##;

よろしく、

于 2012-04-06T16:26:05.127 に答える