使用python在文本文档中排列数据

时间:2016-06-10 20:21:44

标签: python python-2.7

我有一个名为data.txt的文本文件,其中包含以下信息

03/05/2016 11:00  50
03/05/2016 11:11  10
03/05/2016 11:20  30
03/05/2016 11:33  40
03/05/2016 11:40  40
03/05/2016 11:50  50
03/05/2016 11:60  70
03/05/2016 12:00  25
03/05/2016 12:10  69
03/05/2016 12:12  25
03/05/2016 12:30  59
03/05/2016 12:44  25
03/05/2016 12:54  29
03/05/2016 12:60  25

我希望输出像这样。此数据应存储在另一个名为reslt.txt

的文件中
03/05/2016 11:00 - 12:00 290
03/05/2016 12:00 - 13:00 257

reslt.txt文件中的第3列是data.txt文件中第3列的值的总和。我正在使用python 2.7

我怎样才能实现这个家伙

(修订版) 我尝试过的事情

from collections import Counter
import re

with open('data.txt') as f:
    res = sum((Counter({x.group(1): int(x.group(2))})
               for x in (re.search('(.*?):.*\s(\d+)', line) for line in f) if x),
              Counter())

with open('reslt.txt', 'w') as f:
    f.writelines('{0}:00 - {1}:00 {2}\n'.format(k, int(k.split()[-1]) + 1, v)
                 for k, v in sorted(res.iteritems()))

但我得到任何输出

(UPDATE) 附加输入文件

07/05/2016 19:27  0.00169
07/05/2016 19:28  0.0034
07/05/2016 19:29  0.0051
07/05/2016 19:30  0.00679
07/05/2016 19:31  0.0085
07/05/2016 19:32  0.01021
07/05/2016 19:33  0.0119
07/05/2016 19:34  0.01358
07/05/2016 19:35  0.01527
07/05/2016 19:36  0.01696
07/05/2016 19:37  0.01863
07/05/2016 19:38  0.02031
07/05/2016 19:39  0.02199
07/05/2016 19:40  0.02367
07/05/2016 19:41  0.02535
07/05/2016 19:42  0.02704
07/05/2016 19:43  0.02871
07/05/2016 19:44  0.03039
07/05/2016 19:45  0.03207
07/05/2016 19:46  0.03376
07/05/2016 19:47  0.03544
07/05/2016 19:48  0.03712
07/05/2016 19:49  0.0388
07/05/2016 19:50  0.04049
07/05/2016 19:51  0.04217
07/05/2016 19:52  0.04386
07/05/2016 19:53  0.04555
07/05/2016 19:54  0.04723
07/05/2016 19:55  0.0489
07/05/2016 19:56  0.05057
07/05/2016 19:57  0.05225
07/05/2016 19:59  0.05392
07/05/2016 20:00  0.05561
07/05/2016 20:01  0.05729
07/05/2016 20:02  0.05897
07/05/2016 20:03  0.06067
07/05/2016 20:04  0.06234
07/05/2016 20:05  0.06403
07/05/2016 20:06  0.06571
08/05/2016 20:07  0.06739
08/05/2016 20:08  0.06908
09/05/2016 20:09  0.06994
09/05/2016 20:10  0.06994
10/05/2016 20:11  0.06994
10/05/2016 20:14  0.01614
11/05/2016 19:24  0.00197
11/05/2016 19:26  0.01746

1 个答案:

答案 0 :(得分:0)

如果它对你有帮助,这里是我调试运行中最紧凑的形式。您的原始代码对我来说很好,但这可以帮助您诊断问题。

from collections import Counter
import re

with open('data.txt') as f:
    res = sum((Counter({x.group(1): int(x.group(2))})
               for x in (re.search('(.*?):.*\s(\d+)', line) for line in f) if x),
              Counter())

print res

with open('reslt.txt', 'w') as f:
# Write to console
    for k, v in sorted(res.iteritems()):
        print k, '||', v
        print k, '--', int(k.split()[-1]) + 1, '--', v

# Write to file
    f.writelines('{0}:00 - {1}:00 {2}\n'.format(k, int(k.split()[-1]) + 1, v)
                 for k, v in sorted(res.iteritems()))

reslt.txt:

03/05/2016 11:00 - 12:00 290
03/05/2016 12:00 - 13:00 257