如果field里面也包含分隔符(比如"tom,jack,jeff","rosemike",O'neil,"kurt,korn"),那么我们解析起来确实有点麻烦,Text::CSV_XS挺方便。
#!/usr/bin/perl
use strict;
use Text::CSV_XS;
my @columns;
my $csv = Text::CSV_XS->new({
'binary' => 1,
'quote_char' => '"',
'sep_char' => ','
});
foreach my $line(<DATA>)
{
chomp $line;
if($csv->parse($line))
{
@columns = $csv->fields();
}
else
{
print "[error line : ", $csv->error_input, "]\n";
}
map {printf("%-14s\t", $_)} @columns;
print "\n";
}
exit 0;
__DATA__
id,compact_sn,name,type,count,price
37,"ITO-2003-011","台式机,compaq","128M","290","1,2900"
35,I-BJ-2003-010,"显示器,硬盘,内存",'三星',480,"1,4800"
55,"C2003-104",笔记本,"Dell,Latitude,X200",13900,"1,13900"
本文介绍了一种使用Perl语言处理复杂CSV文件的方法,尤其当字段中包含分隔符时,通过Text::CSV_XS模块可以有效地解析这些数据。示例代码展示了如何读取含有特殊格式的数据,并正确地将其解析为数组。
628

被折叠的 条评论
为什么被折叠?



