2

我需要使用 perl 拆分下面的字符串,详细信息如下。我需要将数据从 CSV 文件加载到表中。字符串变量用“”括起来。请给我一个想法,我是 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
4

3 回答 3

8

这看起来很像 CSV。如果是,那么请帮自己和我们一个忙,并为它使用适当的模块而不是正则表达式。有优秀的Text::CSV_XS

于 2012-11-15T14:00:26.713 回答
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";}
}
于 2012-11-15T14:27:10.150 回答
0

您可以使用正则表达式对其进行拆分。您要拆分的每个项目都应包装在一个组中,如下所示

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

括号中的表达式是一个组,然后您可以在代码中获取组。

于 2012-11-15T14:18:10.517 回答