Perl 在CSV中的值中获取双引号
我正在编写一个脚本,它从excel中获取一些值并将其记录到CSV文件中。在此期间,我们对数据执行一些计算,然后登录到CSV。我将在excel中的值后面追加一个字符串,然后将其保存到数组元素中。我使用array as模拟excel工作表以节省执行时间,并最终从数组中选取值并将其记录到CSV 但我面临的问题是,我在一个列中得到的值,在这个列中,我附加了一个字符串和一个excel值,并在其周围加了双引号。它们在excel中不可见,但当我在notepad++中查看CSV时,我得到了它们 我试着找,但找不到任何理由。有人能帮忙吗 请在下面查找代码参考:Perl 在CSV中的值中获取双引号,perl,perl-module,Perl,Perl Module,我正在编写一个脚本,它从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格式的,这就是我所指的输出文件。但是谢谢你的快速回复。