在python中读取文件并比较列
例如: 考虑FIL1.1.TXT:的内容在python中读取文件并比较列,python,Python,例如: 考虑FIL1.1.TXT:的内容 1 0 9227 1152 34 2 2 111 7622 1120 34 2 3 68486 710 1024 14 2 6 265065 3389 800 22 2 7 393152 48438 64 132 3 8 412251 46744 64 132 3 9 430593 50866 256 95 4 10 430730 10770
1 0 9227 1152 34 2
2 111 7622 1120 34 2
3 68486 710 1024 14 2
6 265065 3389 800 22 2
7 393152 48438 64 132 3
8 412251 46744 64 132 3
9 430593 50866 256 95 4
10 430730 10770 256 95 4
11 433750 12701 256 14 3
12 437926 2794 64 34 2
13 440070 43 32 96 3
14 440102 44 32 96 3
15 440357 43 32 96 3
16 440545 43 32 96 3
17 440599 43 32 96 3
18 440625 43 32 96 3
19 440999 84 32 96 0
20 441574 44 32 96 3
`````````````````````````````````````````
`````````````````````````````````````````
`````````````````````````````````````````
`````````````````````````````````````````
`````````````````````````````````````````
`````````````````````````````````````````
其中包含具有6
字段的n
作业(即,e列(0-5))
现在,举例来说,我把前19份工作作为历史。然后我需要从20日开始阅读,以此类推,比较与历史上上述工作相匹配的3,4,5
列。
如果它与第20个工作与历史上的6个(13,14,15,16,17,18)工作匹配的示例中的情况相同
现在我需要创建一个只包含column2?的匹配作业列表
有谁能推荐一个python代码,让我可以阅读20st行并与上面的历史进行比较,然后继续
21,22,23-----------------
,直到文件结束……检查这是否适用于您:
>>> history = {}
>>> historycount = 17
>>> for line in open("filename"):
job = line.split()
jobmatch_criteria = '-'.join(job[-3:])
if historycount > 0:
history.setdefault(jobmatch_criteria,[]).append(job)
historycount -= 1
else:
print "Job", job[0], "Matched with:", '\n\t'.join(' '.join(i) for i in history[jobmatch_criteria]) if jobmatch_criteria in history else "None"
Job 20 Matched with: 13 440070 43 32 96 3
14 440102 44 32 96 3
15 440357 43 32 96 3
16 440545 43 32 96 3
17 440599 43 32 96 3
18 440625 43 32 96 3
Job 21 Matched with: 6 265065 3389 800 22 2
我将其用作测试数据:
1 0 9227 1152 34 2
2 111 7622 1120 34 2
3 68486 710 1024 14 2
6 265065 3389 800 22 2
7 393152 48438 64 132 3
8 412251 46744 64 132 3
9 430593 50866 256 95 4
10 430730 10770 256 95 4
11 433750 12701 256 14 3
12 437926 2794 64 34 2
13 440070 43 32 96 3
14 440102 44 32 96 3
15 440357 43 32 96 3
16 440545 43 32 96 3
17 440599 43 32 96 3
18 440625 43 32 96 3
19 440999 84 32 96 0
20 441574 44 32 96 3
21 265065 3389 800 22 2
请格式化您的代码/文本文件。@SwethaH,请您澄清一下您想要实现什么?哦,我明白了,列计数从零开始。最令人困惑的解释。你的脚本尝试在哪里?你读了20行,存储它们,读了接下来的20行,比较,读了接下来的20行,比较等等。你停留在哪一部分?投了赞成票!!这看起来比我的解决方案更像蟒蛇。谢谢:)@mshsayem谢谢,但第22份工作的历史记录不是固定长度的,第21份工作的历史记录是21份,第23份工作的历史记录是24份,依此类推……请告诉我怎么做……必要时更新
历史记录
字典