gpt4 book ai didi

python - 查看文件中的一行是否在另一个文件中重复 Python

转载 作者:行者123 更新时间:2023-12-01 05:37:43 25 4
gpt4 key购买 nike

我正在尝试搜索 filetwos 内容并查看它是否包含给定搜索词(fileone 中的行)的任何重复项。如果它包含重复项,它将不执行任何操作,但如果它不包含重复项,我希望它附加一行。

fileone.txt(两行)

[('123', 'aaa')]

[('900', 'abc')]

filetwo.txt

[('123', 'aaa')]

[('999', 'zzz')]

下面的代码将行添加到 filetwo,即使它们是重复的。我无法弄清楚这一点!

with open('fileone.txt', 'r') as f:
seen = open('filetwo.txt', 'a+')
for line in f:
if line in seen:
print(line + 'is a duplicate')
else:
seen.write(line)

f.close()
seen.close()

最佳答案

您不能仅执行 if line in saw: 来搜索整个 seen 文件中的给定行。即使可以,它也只会搜索文件的其余部分,并且由于您位于文件的末尾,这意味着您没有搜索任何内容。而且,即使您解决了该问题,仍然需要对整个文件的每一行进行线性搜索,这会非常慢。

最简单的事情是跟踪所有看到的行,例如,使用 set:

with open('filetwo.txt') as f:
seen = set(f)

with open('fileone.txt') as fin, open('filetwo.txt', 'a+') as fout:
for line in fin:
if line in seen:
print(line + 'is a duplicate')
else:
fout.write(line)
seen.add(line)

请注意,在开始之前,我用 filetwo.txt 中的所有行预先填充了 seen,然后将每个新行添加到 seen 随着我们的进展。这避免了一遍又一遍地重新读取 filetwo.txt - 我们知道我们要写入什么,所以只需记住它即可。

关于python - 查看文件中的一行是否在另一个文件中重复 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18521662/

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