[英]Parsing a CSV quoted string CSV file in Perl using split
我有一个如下所示格式的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
诸如嵌入式逗号之类的问题正是创建诸如Text::CSV
模块的原因。 如果但仅当数据没有嵌入的逗号时,才可以使正则表达式起作用。 当数据具有嵌入式逗号时,是时候转到设计用于处理带有嵌入式逗号的CSV的工具了,它应该是Perl中的Text::CSV
(及其相对的Text::CSV_PP
和Text::CSV_XS
)。
我也使用了与您相同的方法,对我来说效果很好。 试试这个代码。
my @values = split(/(?<="),(?=")/, $line);
希望能帮助到你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.