gpt4 book ai didi

excel - 在 Perl 中读取文件、匹配字符串和格式化输出

转载 作者:行者123 更新时间:2023-12-04 21:05:03 25 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .


8年前关闭。







Improve this question




在这上面花了很长时间,现在让我头疼。我已经简化了数据文件,但基本上我已经从 5 个不同的文件中提取了一些值,现在想将它们绘制到 excel 中。因此,折线图的 excel 格式需要更正。

当前文件看起来像

Report-20140521.csv: Sun, 20
Report-20140530.csv: Sun, 23
Report-20140606.csv: Sun, 24
Report-20140613.csv: Sun, 25
Report-20140621.csv: Sun, 21
Report-20140521.csv: Mon, 22
Report-20140530.csv: Mon, 23
Report-20140606.csv: Mon, 24
Report-20140613.csv: Mon, 24
Report-20140621.csv: Mon, 21
Report-20140521.csv: Tues, 22
Report-20140530.csv: Tues, 23
Report-20140606.csv: Tues, 20
Report-20140613.csv: Tues, 21
Report-20140621.csv: Tues, 21

我想把这一切都展平,并有五行,每行的值都像:-
                 Sun Mon Tue wed ..

Report-20140521.csv: 20 22 22
Report-20140530.csv: 23 23 23
Report-20140606.csv: 24 24 20
Report-20140613.csv: 25 24 21
Report-20140621.csv: 21 21 21

已经研究过使用数组和数组数组,但无论哪种方式,数据似乎都被操纵了,并且无法使用 5 条不同的线使其变平。最重要的是,我需要保留文件名,因为稍后将在 excel 中将其删除为日期格式。

最佳答案

我认为散列的散列可以很好地解决这个问题,因为你的星期几值是离散的和有界的。这可能会起作用:

use strict;

my %matrix;

open IN, 'yourfile.txt' or die $!;
while (<IN>) {
chomp;
my ($report, $val) = split /,/;
my ($file, $dow) = split /: /, $report;

$matrix{$file}{$dow} = $val;
}
close IN;

my @dow = qw(Sun Mon Tues Wed Thu Fri Sat);

foreach my $file (sort keys %matrix) {

print $file, "\t";

my $report_ref = $matrix{$file};

foreach my $dow (@dow) {
print $$report_ref{$dow}, "\t";
}

print "\n";
}

样本输出:
Report-20140521.csv      20      22      22
Report-20140530.csv 23 23 23
Report-20140606.csv 24 24 20
Report-20140613.csv 25 24 21
Report-20140621.csv 21 21 21

关于excel - 在 Perl 中读取文件、匹配字符串和格式化输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24411008/

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