我有一个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
答案 0 :(得分:4)
嵌入式逗号等问题恰恰是创建Text::CSV
等模块的原因。如果,但仅当数据没有嵌入的逗号时,您才能使正则表达式起作用。当数据嵌入逗号时,是时候转移到设计用于处理带有嵌入式逗号的CSV的工具,而Perl中的Text::CSV
(及其亲属Text::CSV_PP
和Text::CSV_XS
)
答案 1 :(得分:0)
我也使用了与你相同的方法,它对我很好。试试这段代码。
my @values = split(/(?<="),(?=")/, $line);
希望有所帮助