Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 在CSV中的值中获取双引号_Perl_Perl Module - Fatal编程技术网

Perl 在CSV中的值中获取双引号

Perl 在CSV中的值中获取双引号,perl,perl-module,Perl,Perl Module,我正在编写一个脚本,它从excel中获取一些值并将其记录到CSV文件中。在此期间,我们对数据执行一些计算,然后登录到CSV。我将在excel中的值后面追加一个字符串,然后将其保存到数组元素中。我使用array as模拟excel工作表以节省执行时间,并最终从数组中选取值并将其记录到CSV 但我面临的问题是,我在一个列中得到的值,在这个列中,我附加了一个字符串和一个excel值,并在其周围加了双引号。它们在excel中不可见,但当我在notepad++中查看CSV时,我得到了它们 我试着找,但找不

我正在编写一个脚本,它从excel中获取一些值并将其记录到CSV文件中。在此期间,我们对数据执行一些计算,然后登录到CSV。我将在excel中的值后面追加一个字符串,然后将其保存到数组元素中。我使用array as模拟excel工作表以节省执行时间,并最终从数组中选取值并将其记录到CSV

但我面临的问题是,我在一个列中得到的值,在这个列中,我附加了一个字符串和一个excel值,并在其周围加了双引号。它们在excel中不可见,但当我在notepad++中查看CSV时,我得到了它们

我试着找,但找不到任何理由。有人能帮忙吗

请在下面查找代码参考:

$Array_Final[$R_FIN][11] = "Last Invoice : ".$Array_Input_DP_Plan3[$W_R][$C_LI];
my $csv = Text::CSV->new ( { binary => 1, eol => "\n"  } )  # should set binary attribute.
                 or die "Cannot use CSV: ".Text::CSV->error_diag ();

    open my $fh, ">:encoding(utf8)", $VPath."\\Temp\\".$VCsvFileName;
    my @log;
    for my $row(1..$#Array_Final){
        #COMMENT:EMPTY THE LOG ARRAY
        $#log = -1;
        for my $col(1..42){
            if(defined $Array_Final[$row][$col] && $Array_Final[$row][$col] ne ""){
                push @log, $Array_Final[$row][$col];
            }
            else{
                push @log, undef;
            }   
        }
        #print (@log);
        $csv->print ($fh, \@log);
    }
    close $fh or die "new.csv: $!";
我得到的CSV行如下所示:

20161212-00120170111,DEL,12,3,A,ABC,“最后一张发票:1111”,DP

默认情况下,字段中的空格将触发引号。毫无规则 存在强制在CSV中使用的默认值,也不存在任何相反的默认值 这对安全来说是正确的。您可以通过以下方式从该触发器中排除空间: 将此属性设置为0-

因此,将其设置为0将为您解决此问题

$csv->quote_space (0);
也可以在创建对象时指定相同的值

$csv = Text::CSV->new ({
           quote_space    => 0,
       });
默认情况下,字段中的空格将触发引号。毫无规则 存在强制在CSV中使用的默认值,也不存在任何相反的默认值 这对安全来说是正确的。您可以通过以下方式从该触发器中排除空间: 将此属性设置为0-

因此,将其设置为0将为您解决此问题

$csv->quote_space (0);
也可以在创建对象时指定相同的值

$csv = Text::CSV->new ({
           quote_space    => 0,
       });

谢谢,Chankey u搞定了。这无法删除写入文件时已经存在的引号。它不仅不会添加它们。是的,但我的输入没有引号,而是空格,它们指向引号。@Mohit-Ah。。。这不是问题所显示的。它有“最后一张发票:”(带引号)。描述还表明引号(最初)来自Excel数据。很好,这确实不会添加引号。@zdim,不,那“最后的发票:”是CSV格式的,这就是我所指的输出文件。但是谢谢你的快速回复。谢谢,Chankey u搞定了。这不能删除在编写文件时已经存在的引号。它不仅不会添加它们。是的,但我的输入没有引号,而是空格,它们指向引号。@Mohit-Ah。。。这不是问题所显示的。它有“最后一张发票:”(带引号)。描述还表明引号(最初)来自Excel数据。很好,这确实不会添加引号。@zdim,不,那“最后的发票:”是CSV格式的,这就是我所指的输出文件。但是谢谢你的快速回复。