Python 如何从文件中删除一行?
我有两个文件(file1和file2),希望将file2的每一行与file1中的所有行进行比较。如果满足此条件:Python 如何从文件中删除一行?,python,file,Python,File,我有两个文件(file1和file2),希望将file2的每一行与file1中的所有行进行比较。如果满足此条件: (ln2[1][0]!=ln1[1][0])和(ln2[1][0]!='-') 然后我想从file2中删除file2的当前行,即ln2。 我用python编写了这段代码,但有一个错误 arr1 = [] with open('FA1.txt', 'r') as file1: Lines1 = file1.readlines() for line in Lines1:
(ln2[1][0]!=ln1[1][0])和(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='')
,但出现了错误:索引器:字符串索引超出范围
文件的内容如下所示:
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)
重写代码会给我们带来:
with open('FA1.txt', 'r') as file1:
arr1 = [line.split() for line in file1]
with open('a.txt', 'r') as file2:
arr2 = [line.split() for line in file2]
with open("b.txt", "w") as text_file:
for line2 in arr2:
for line1 in arr1:
if (line2[1][0] != line1[1][0]) and (line2[1][0] != '-'):
text_file.write(' '.join(line2) + '\n')
我使用了不同的文件作为输出,因为我不想破坏我的测试数据
但是现在,由于循环,您的结果文件b.txt
将包含重复的行,您将输出与条件匹配的所有行,而这些行应该被删除
00- 0-
00- 0-
0-0 0-
0-0 0-
-10 0-
-10 0-
根据您的问题,您希望将第二个文件的每一行与第一个文件的每一行进行比较,如果没有任何一行匹配,则写入数据。代码需要反映这一点,因此我们使用如果没有任何…
with open('FA1.txt', 'r') as file1:
arr1 = [line.split() for line in file1]
with open('a.txt', 'r') as file2:
arr2 = [line.split() for line in file2]
with open("b2.txt", "w") as text_file:
for line2 in arr2:
if not any((line2[1][0] != line1[1][0]) and (line2[1][0] != '-') for line1 in arr1):
text_file.write(' '.join(line2))
结果是
1-- -0
arr1=[line.split()用于文件1中的行]
的简短说明。我使用列表理解来缩短代码。而且文件是可编辑的,所以我不必在这里使用readlines
。,但我有一个错误。。。什么错误?Stacktrace?当我使用:text_file.write(ln2,'')时,错误是:TypeError:write()只接受一个参数(给定2个),当我使用:ln2=''时,错误是:indexer:string index超出范围。如果我不应该为write方法提供两个参数,那么我如何删除该行?你不能。您需要a)打开带有“w”的“a.txt”-它将截断它,然后写入所有应该在其中结束的数据,或者b)将所有需要的数据写入新文件,删除旧文件并重命名新文件。您可以添加预期的输出吗?