如何使用正则表达式在Perl中解析引用的CSV?
发布时间:2020-12-14 06:27:05 所属栏目:百科 来源:网络整理
导读:我使用引号解析CSV数据时遇到了一些问题.我的主要问题是一个字段中的引号.在以下示例中,第1-4行正确工作,但5,6和7不正常. COLLOQ_TYPE,COLLOQ_NAME,COLLOQ_CODE,XDATAS,"BELT,FAN",003541547,S,"BELT V,000324244,SHROUD SPRING SCREW,000868265,"D" REL VAL
我使用引号解析CSV数据时遇到了一些问题.我的主要问题是一个字段中的引号.在以下示例中,第1-4行正确工作,但5,6和7不正常.
COLLOQ_TYPE,COLLOQ_NAME,COLLOQ_CODE,XDATA S,"BELT,FAN",003541547,S,"BELT V,000324244,SHROUD SPRING SCREW,000868265,"D" REL VALVE ASSY,000771881,"YBELT,"V"",000323030,'V'",000322933, 我想避免使用Text :: CSV,因为它没有安装在目标服务器上.意识到CSV比我们使用Perl Cookbook的食谱更复杂. sub parse_csv { my $text = shift; #record containg CSVs my @columns = (); push(@columns,$+) while $text =~ m{ # The first part groups the phrase inside quotes "([^"]*(?:.[^"]*)*)",? | ([^,]+),? |,}gx; push(@columns,undef) if substr($text,-1,1) eq ','; return @columns ; # list of vars that was comma separated. } 有没有人提出改进正则表达式来处理上述情况?
请尝试使用CPAN
没有任何理由无法下载Text::CSV的副本,或任何其他基于XS的CSV解析器的实现,并将其安装在您的本地目录或项目的lib / sub目录中,以便与您的项目一起安装推出. 如果您无法在项目中存储文本文件,那么我想知道如何编码您的项目. http://novosial.org/perl/life-with-cpan/non-root/ 应该是一个很好的指导,如何让他们进入当地的工作状态. 不使用CPAN真的是灾难的秘诀. 在尝试编写自己的CSV实现之前,请考虑这一点. Text::CSV是超过一百行代码,包括固定的错误和边缘案例,并从头开始重写这只会让你学到如何糟糕的CSV可以是艰难的方式. 注意:我学到了这个难题.在我发现在后来的版本中添加了一个内置的文件之后,让我一整天都能在PHP中获得一个工作的CSV解析器.真的很可怕 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |