我有两个文件(file1和file2),希望将file2的每一行与file1中的所有行进行比较。如果满足此条件:
(ln2[1][0] != ln1[1][0]) and (ln2[1][0] != '-')
然后我想从file2中删除file2的当前行,即ln2。
我用python编写了这段代码,但有一个错误
arr1 = []
with open('FA1.txt', 'r') as file1:
Lines1 = file1.readlines()
for line in Lines1:
arr1.append(line.split())
arr2 = []
with open('a.txt', 'r') as file2:
Lines2 = file2.readlines()
for line in Lines2:
arr2.append(line.split())
for ln2 in arr2:
for ln1 in arr1:
if (ln2[1][0] != ln1[1][0]) and (ln2[1][0] != '-'):
text_file = open("a.txt", "a+")
text_file.write(ln2, '')
text_file.close()
#ln2 = ''
另外,我没有使用最后三行代码,而是使用了:(ln2 = '')
,但出现了错误:IndexError: string index out of range
文件的内容如下所示:
File1:
010 00
001 11
010 10
File2:
00- 0-
0-0 0-
1-- -0
-10 0-
我得到以下错误:
TypeError: write() takes exactly one argument (2 given)
重写代码会给我们带来:
我使用了不同的文件作为输出,因为我不想破坏我的测试数据
但是现在,由于循环,您的结果文件
b.txt
将包含重复的行,并且您将输出所有符合条件的行,而这些行应该被删除根据您的问题,您希望将第二个文件的每一行与第一个文件的每一行进行比较,如果没有任何一行匹配,则写入数据。代码需要反映这一点,因此我们使用
if not any ...
结果是
对
arr1 = [line.split() for line in file1]
的简短解释。我使用列表理解来缩短代码。而且文件是可编辑的,所以我不必在这里使用readlines
相关问题 更多 >
编程相关推荐