使用拆分在Perl中解析CSV引用的字符串CSV文件

时间:2012-03-23 04:56:15

标签: regex perl

我有一个CSV文件,格式如下所示,我正在使用Perl split命令,如下所示,基于逗号作为分隔符。问题是我有一个带有逗号的带引号的字符串"HTTP Large, GMS, ZMS: Large Files",但它失败了。数组值只有更少的元素。如何修改split命令。

  my @values = split('\,', $line);

CSV文件

 10852,800 Mob to Int'l,235341739,573047,84475.40,0.0003,Inbound,Ber unit
 10880,"HTTP Large, GMS, ZMS: Large Files",52852810,128,13712.68,0.0002,,Rer unit
 13506,Presence National,2716766818,2447643,309116.40,0.0001,Presence,per Cnit

2 个答案:

答案 0 :(得分:4)

嵌入式逗号等问题恰恰是创建Text::CSV等模块的原因。如果,但仅当数据没有嵌入的逗号时,您才能使正则表达式起作用。当数据嵌入逗号时,是时候转移到设计用于处理带有嵌入式逗号的CSV的工具,而Perl中的Text::CSV(及其亲属Text::CSV_PPText::CSV_XS

答案 1 :(得分:0)

我也使用了与你相同的方法,它对我很好。试试这段代码。

my @values = split(/(?<="),(?=")/, $line);

希望有所帮助