gpt4 book ai didi

python - 逐行比较2个文件

转载 作者:太空宇宙 更新时间:2023-11-03 19:02:50 26 4
gpt4 key购买 nike

我有 2 个以下形式的文件:

file1:
work1
7 8 9 10 11
1 2 3 4 5
6 7 8 9 10

file2:
work2
2 3 4 5 5
2 4 7 8 9
work1
7 8 9 10 11
1 2 4 4 5
6 7 8 9 10
work3
1 7 8 9 10

现在我想与文件进行比较,无论标题(work1)是否相等。我想比较后续部分并打印发现差异的行。例如

 work1 (file1)
7 8 9 10 11
1 2 3 4 5
6 7 8 9 10

work1 (file2)
7 8 9 10 11
1 2 4 4 5
6 7 8 9 10

现在我想打印出现差异的行,即“1 2 4 4 5”

为此,我编写了以下代码:

with open("file1",) as r, open("file2") as w:
for line in r:
if "work1" in line:
for line1 in w:
if "work1" in line1:
print "work1"

但是,从现在开始,我对如何并行读取这两个文件感到困惑。有人可以帮我解决这个问题吗...因为在比较“work1”之后我没有得到如何并行读取文件

最佳答案

您可能想尝试 <a href="http://docs.python.org/2/library/itertools.html#itertools.islice" rel="noreferrer noopener nofollow">itertools</a> Python 中的模块。它包含一个名为 izip 的函数它可以做你需要的事情,还有一个名为 islice 的函数。您可以迭代第二个文件,直到找到您要查找的 header ,然后可以将 header 分割。

这是一些代码。

from itertools import *    

w = open('file2')
for (i,line) in enumerate(w):
if "work1" in line:
iter2 = islice(open('file2'), i, None, 1) # Starts at the correct line

f = open('file1')
for (line1,line2) in izip(f,iter2):
print line1, line2 # Place your comparisons of the two lines here.

现在可以保证,在第一次运行循环时,两行都会得到“work1”。之后就可以比较了。自 f短于w ,一旦到达 f 的末尾,迭代器就会耗尽自身并停止。 .

希望我解释得很好。

编辑:添加导入语句。

编辑:我们需要重新打开 file2。这是因为在 Python 中迭代可迭代对象会消耗可迭代对象。因此,我们需要将一个全新的值传递给 islice所以它有效!

关于python - 逐行比较2个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15602080/

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