for循环中的Python减法

时间:2016-08-24 20:23:41

标签: python parsing

我需要一些帮助在for循环中做一些简单的计算。我在下面的示例文件中有两列。第1列是日期时间-hr-min-ss,第2列是值。我想打印文件并计算当前值与前一小时值之间的差异。我尝试了下面的代码,但无法减去前一个小时的值。我可以在下面更正我的代码时获得一些帮助/指导吗?提前谢谢。

文件内容:

20160823220000 1208091708
20160823230000 1209559863
20160824000000 1210706089
20160824010000 1211612458
20160824020000 1212410614
20160824030000 1213059346

我的代码:

with open('datecount.txt') as data:
    z = 0
    for line in data:
        x = (line.strip().split())
        num = int(x[1])
        z = num
        print(z - z)

期望的输出:

date-time-hr-min-ss Value       Delta-from-prev-Hr
==========================================================
20160823220000      1208091708  N/A 
20160823230000      1209559863  1468155 
20160824000000      1210706089  1146226
20160824010000      1211612458  906369
20160824020000      1212410614  798156
20160824030000      1213059346  648732

2 个答案:

答案 0 :(得分:3)

with open('datecount.txt') as data:
    prev = 0
    for line in data:
        value = int(line.strip().split()[1])
        print(value - prev)
        prev = value

为变量命名以使其名称有意义是一个好主意。换句话说,请将x, y, z留在数学中。

答案 1 :(得分:1)

如果您可以假设文件中的每一行都是前一小时后的一小时,那么您甚至不必担心会弄乱时间列。只需使用它..

with open('datecount.txt') as data:
    z = 0
    for line in data:
        x = (line.strip().split())
        num = int(x[1])
        print(num - z)
        z = num

你的代码已经完成了这个,你只需要在将z分配给num之前打印(num-z)。而且你也有打印(z-z)不打印(num-z)