gpt4 book ai didi

perl - 我的 perl 脚本出现 "2032 - EIF - CR char inside unquoted, not part of EOL @ pos"错误

转载 作者:行者123 更新时间:2023-12-04 05:58:15 24 4
gpt4 key购买 nike

我编写了一个简单的 perl 脚本来从 .csv 文件中读取一行。代码如下:

#!/usr/bin/perl

use strict;
use warnings;

use Text::CSV;

my $csv = Text::CSV->new({ binary => 1 });


open my $fh, "<", "testresults.csv" or die "testresults.csv $!";
while ( my $row = $csv->getline( $fh ) ) {
my @fields = @$row;
}
$csv->eof or $csv->error_diag;
close $fh or die "testresults.csv $!";

testresults.csv 文件如下所示:

Node1,Node2,Node3,Node4,map1,map2,map3,map4,map5,map6,map7,map8,DM,LAT,AVG,product

第一行,每行结果:

name1,name2,name3,name4,Node1,Node2,Node3,Node4,Node5,Node6,Node7,Node8,0%,
0.002835480002,0.1714008533,4.86003691857886E-04


等等。

当我从命令提示符执行 ./filename.pl 时,我的代码出现以下错误:
CSV_XS 错误:2032 - EIF - 未加引号内的 CR 字符,不属于 EOL @ pos 420

我试图用谷歌搜索这个错误,但无法理解这个错误。

最佳答案

从我们在评论中的对话看来,错误来自输入中的字符串与空字符交错,通过使用使其可见

use Data::Dumper;
$Data::Dumper::Useqq = 1;
while (<$fh>) {
print Dumper $_;
}

一个快速的技巧是使用以下内容去除输入文件中的空字符:
perl -i.bak -pwe 'tr/\0//d' testresults.csv

注意:但是正如在编码问题上更有经验的人的评论中指出的那样,这可以/可以/应该通过解码您的数据来解决。仅仅去除坏符号可能会以微妙的方式破坏您的数据,这不是理想的解决方案。

对不起,我对此知之甚少,但使用 Text::CSV::Encoded听起来确实是一个好的开始,就像 cjm 建议的那样。

关于perl - 我的 perl 脚本出现 "2032 - EIF - CR char inside unquoted, not part of EOL @ pos"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9248974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com