繁体   English   中英

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

[英]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_PPText::CSV_XS )。

我也使用了与您相同的方法,对我来说效果很好。 试试这个代码。

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

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM