【发布时间】:2011-11-17 23:16:15
【问题描述】:
现在我正在尝试同步按日期列出的两个数据文件,以便稍后进行比较。但是我似乎不能只打印日期匹配的行。此时,我已将每个文件的数据分成 2 个数组。我只需要找到两个数组中的日期并将它们打印出来。任何建议将不胜感激。
这是我正在使用的原始数据的示例集,每个文件的格式相同:
09/11/2009,00:56:00,51.602,47.894,87,88,0,1032 09/12/2009,00:56:00,57.794,55.796,93,54,0,1023.6 09/13/2009,00:56:00,64.292,62.204,93,66,0,1014.4 09/14/2009,00:56:00,61.592,55.4,80,25,0,1009.6 09/15/2009,00:56:00,58.604,53.798,84,31,0,1009.1 09/16/2009,00:56:00,53.6,48.902,84,45,0,1017我已将日期拆分为每个文件的数组。我的最终目标是只打印两个文件都有数据的代码行。所以要做到这一点,我想将 2 个数组与作为日期的元素进行比较。
我的初始代码如下所示:
foreach $bdate(@bdate){
while (<PL>){
chomp;
@arr = split (/,/);
$pday=$arr[1];
push @pdate, $pday;
if ($bdate eq $pdate){
print "$bdate,$pday\n";
}
}
【问题讨论】:
-
“按日期列出”是什么意思?你能提供一些示例代码来说明你已经走了多远,哪些部分没有工作?
-
这里是我的数据集的示例,出于我的问题的目的,我已经拆分了保持 mm/dd/yyyy 格式的日期并将其推送到一个数组中。我需要获取其中两个数组并仅找到两个数组中的日期。 02/12/2010,00:56:00,27.302,15.602,61,27,3.24193043478261,1001 02/13/2010,00:56:00,26.006,6.008,42,75,1.6209652173913,1005.8/20 2010,00:56:00,26.708,16.502,65,329,18.9112608695652,992.9 02/15/2010,00:56:00,30.902,19.004,61,287,8.64514782608696,996.8
-
这是我尝试的第一个代码示例: foreach $bdate(@bdate){ while (
){ chomp; @arr = 拆分 (/,/); $pday=$arr[1];推送@pdate,$pday; if ($bdate eq $pdate){ print "$bdate,$pday\n"; } } -
编辑您的问题而不是添加 cmets - 它可以更轻松地格式化代码以提高可读性
-
我刚刚在我的数据中注意到的一件事是,一个文件是 mm/dd/yy 格式,而另一个是 mm/dd/yyyy 格式。让我回去解决这个问题,然后重试您对我的第一个建议。感谢您的患者帮助我。
标签: perl