2012-11-15 138 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模块为您完成肮脏的工作。 –