访问存储在 .CSV 文件中的数据
Accessing data stored in .CSV file
我写了一个非常简单的脚本,它应该输出 CSV 文件第二行的第二个元素。但是,当我 运行 它时,我收到以下错误消息: "Uncaught exception from user code: CSV parse error: EIF - CR char inside unquoted, not part of EOL at csv.tester1.pl line 13"
我做错了什么?
这是实际代码:
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use Tie::Array::CSV;
tie my @data, 'Tie::Array::CSV', 'ExampleData.csv';
my $length = scalar(@data);
print $length;
print "\n";
print $data[1][1];
而数据文件名为 ExampleData.csv 并且是:
25201927,5.62963E+14,B,100,203300,P
25201928,5.62963E+14,D,0,0,P
25201928,5.62963E+14,B,400,202500,P
我怀疑这是由于 CSV 文件源自 Windows 但在不同的平台上处理
Tie::Array::CSV
将记录分隔符硬编码为 LF,这在几乎任何情况下都是正确的(包括 Windows 正在 Windows 系统上处理的文件)但是 Windows 非本地处理的文件将以 CR LF 结尾。该模块将仅剥离 LF,在最后一个字段的末尾留下虚假的 CR
如果我的猜想是正确的(我的Windows机器的系统盘今天下午死了,目前无法测试)那么你可以将记录分隔符改为CR LF,写
tie my @data, 'Tie::Array::CSV', 'ExampleData.csv', tie_file => { recsep => "\r\n" };
希望对您有所帮助
我写了一个非常简单的脚本,它应该输出 CSV 文件第二行的第二个元素。但是,当我 运行 它时,我收到以下错误消息: "Uncaught exception from user code: CSV parse error: EIF - CR char inside unquoted, not part of EOL at csv.tester1.pl line 13"
我做错了什么?
这是实际代码:
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use Tie::Array::CSV;
tie my @data, 'Tie::Array::CSV', 'ExampleData.csv';
my $length = scalar(@data);
print $length;
print "\n";
print $data[1][1];
而数据文件名为 ExampleData.csv 并且是:
25201927,5.62963E+14,B,100,203300,P
25201928,5.62963E+14,D,0,0,P
25201928,5.62963E+14,B,400,202500,P
我怀疑这是由于 CSV 文件源自 Windows 但在不同的平台上处理
Tie::Array::CSV
将记录分隔符硬编码为 LF,这在几乎任何情况下都是正确的(包括 Windows 正在 Windows 系统上处理的文件)但是 Windows 非本地处理的文件将以 CR LF 结尾。该模块将仅剥离 LF,在最后一个字段的末尾留下虚假的 CR
如果我的猜想是正确的(我的Windows机器的系统盘今天下午死了,目前无法测试)那么你可以将记录分隔符改为CR LF,写
tie my @data, 'Tie::Array::CSV', 'ExampleData.csv', tie_file => { recsep => "\r\n" };
希望对您有所帮助