我有一个由空行分隔的数字列表的文本文件给出如下─我想添加的所有第一(20.187 + 19.715 + 20.706 ...),第二个元素(15.415 + 14.726 + 15.777)等获得每个元素的总数为1,第2,第3等
20.187 15.415 8.663 6.001 6.565 6.459 6.564 ..
19.715 14.726 8.307 5.833 6.367 6.089 6.444 ..
20.706 15.777 9.185 6.546 7.327 7.172 7.084 ...
Run Code Online (Sandbox Code Playgroud)
因为它们是*不列排列*我怎么能加起来数组中的元素.
使用split让所有的领域.跟踪数组中的运行总计(其索引被映射到文件中的列).
像这样的东西:
while (<$file>)
{
chomp;
my $index = 0;
$total[$index++] += $_ for split;
}
Run Code Online (Sandbox Code Playgroud)
请注意,split默认情况下会拆分空格.如果您愿意,可以使用其他分隔符.
编辑:现在问题已得到澄清,这个答案可悲无用.请改用Brian Roach的答案.
编辑:从澄清的问题,需要处理空白行和一系列数字被分成多行的可能性.
my @totals;
my @currentVals;
while (my $line = <FILE>)
{
chomp($line);
if ($line eq "")
{
for ($i = 0; $i < @currentVals; $i++)
{
@totals[$i] += @currentVals[$i];
}
@currentVals = ();
}
else
{
push @currentVals, split(' ', $line);
}
}
Run Code Online (Sandbox Code Playgroud)
这应该做你想要的.您需要继续添加到currentVals数组,直到您点击一个空行,然后进行数学运算.
| 归档时间: |
|
| 查看次数: |
1444 次 |
| 最近记录: |