【发布时间】:2019-06-03 12:43:53
【问题描述】:
我正在尝试在 Perl 中逐行读取下面的 CSV 文件内容。
CSV 文件内容:
A7777777.A777777777.XXX3604,XXX,3604,YES,9
B9694396.B216905785.YYY0018,YYY,0018,YES,13
C9694396.C216905785.ZZZ0028,ZZZ,0028,YES,16
我可以使用以下代码拆分行内容,也可以验证内容:
@column_fields1 = split(',', $_);
print $column_fields1[0],"\n";
我还试图在 CSV 文件的第一列中找到第二部分(即 A777777777 或 B216905785 或 C216905785) - 使用以下代码以 . 分隔的第一列,我无法获取它。
相反,只打印了一个新行。
my ($v1, $v2, $v3) = split(".", $column_fields1[0]);
print $v2,"\n";
有人可以建议我如何拆分数组元素并获得上述值吗?
在我的功能上,我需要在某个地方完全使用第一列值,而在某个地方只需要第二部分。
下面是我的代码:
use strict;
use warnings;
my $dailybillable_tab_section1_file = "./sql/demanding_01_T.csv";
open(FILE, $dailybillable_tab_section1_file) or die "Could not read from $dailybillable_tab_section1_file, program halting.";
my @column_fields1;
my @column_fields2;
while (<FILE>)
{
chomp;
@column_fields1 = split(',', $_);
print $column_fields1[0],"\n";
my ($v1, $v2, $v3) = split(".",$column_fields1[0]);
print $v2,"\n";
if($v2 ne 'A777777777')
{
…
…
…
}
else
{
…
…
…
}
}
close FILE;
【问题讨论】:
-
.是一个正则表达式元字符,你需要使用它的字面意思对其进行转义 -
亚伦,谢谢你的建议!我已经使用了下面的,我仍然无法得到它。我的 ($v1, $v2, $v3) = split("\.",$COLUMN_FIELDS1[0]);打印 $v1,"\n";