-2

我需要将 csv 行拆分为变量

# sample data
"100-001","Bla Bla, Bla, Bla","","",0.00000,"W1",6.000,0.000

我试过了,但数字字段没有“”,所以它不起作用......

($var0,$var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8) = split(/\","/);

谢谢...

4

2 回答 2

4

对于 CSV,您应该使用解析器。显而易见的是 Text::CSV。如果如您所说,安装模块很困难,您可以使用 Pure Perl 实现,称为Text::CSV_PP. 将其粘贴到文件中并使用它。问题解决了。

解决这个问题的另一种方法是使用核心模块Text::ParseWords,它可以在紧要关头进行体面的 CSV 解析。

#!/usr/bin/env perl

use strict;
use warnings;

use Text::ParseWords;

print "$_\n" for parse_line( ',', 0, '"100-001","Bla Bla, Bla, Bla","","",0.00000,"W1",6.000,0.000');
于 2012-06-26T18:58:35.573 回答
0

这将起作用:

($var0,$var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8) = 
    split(/(?<="|[0-9]),(?="|[0-9])/);
  • ?<=是一个后向断言
  • ?=是一个前瞻断言
于 2012-06-26T16:48:14.350 回答