2012-11-15 137 views
2

我需要使用perl分割下面的字符串,詳細信息如下所示。我需要將數據從CSV文件加載到表中。字符串變量包含在「」中。請給我一個想法,我是perl腳本的新手。使用perl分割逗號分隔的字符串和文本限定符

字符串:"February 6, 2012","","","1","02/06/12","","",1,1,0

輸出:

February 6, 2012 
<BLANK VALUE> 
<BLANK VALUE> 
1 
02/06/12 
<BLANK VALUE> 
<BLANK VALUE> 
1 
1 
0 
+0

Stackoverflow不是「爲我寫的代碼」論壇。告訴我們你有什麼,我們會幫你改進它。 –

回答

8

這看起來很像CSV。如果是的話,請做你自己和我們的幫忙,並使用適當的模塊代替正則表達式。有優秀的Text::CSV_XS

0

您可以使用正則表達式來分割它。要拆分的每個項目應該被包裹在一組,就像它是一組支架這個

^\"(.*?)\",\"\",\"\",\"(.*?)\",\"(.*?)\",\"\",\"\",(\d),(\d),(\d) 

表達,那麼你就可以得到組代碼。

+0

這樣的正則表達式對於使用像Text:CSV這樣的模塊來說是一個很好的廣告:-) –

0
#!/usr/bin/perl 
use strict; 
use warnings; 

my $ac = qq("February 6, 2012","","","1","02/06/12","","",1,1,0); 

$ac=~s/\"//ig; 
my @arr = split(',', $ac); 
$arr[0] .= $arr[1]; 
print $arr[0] . "\n"; # the date is February 6, 2012 

# print other elements 
for (my $i=2; $i < @arr; $i++) { 
    if ($arr[$i] eq '') {print "<BLANK VALUE>\n";} 
    else {print $arr[$i] . "\n";} 
} 
+0

引號內有逗號嗎?如果不是,請在逗號分割並從所有字段中刪除前導引號和結束引號。這是一個CSV文件嗎?如果是這樣,請使用Text :: CSV模塊爲您完成骯髒的工作。 –