这种类型的问题已经被问过好几次了,但我似乎找不到完全相同的场景并使用python3
我有两个文件txt或csv。我需要比较每一行并将差异输出到新文件中的新行。你知道吗
到目前为止,我已经尝试过这样的方法:虽然很接近,但我不知道如何将每一行的差异变成一个新行,我似乎只能将每一个单词变成一个新行或一行中的所有内容。你知道吗
a = open('test1.txt').read().split()
b = open('test2.txt').read().split()
c = [x for x in b if x not in a]
open('test3.txt', 'wt').write('\n'.join(c)+'\n')
“.join”前面的\n使每个单词都成为新行,我不希望每个差异都成为新行,而是希望同一行上一行的所有差异。”。 我希望这是有道理的。你知道吗
示例: test1.txt文件:
how are you
I am well
all is good
test2.txt文件:
how are you
I like toys
all is not well
输出: 测试3.txt
am well
good
我也尝试过这个代码的CSV:但我不能一个错误。你知道吗
import csv
f1 = open ("test1.csv")
oldFile1 = csv.reader(f1)
oldList1 = []
for row in oldFile1:
oldList1.append(row)
f2 = open ("test2.csv")
oldFile2 = csv.reader(f2)
oldList2 = []
for row in oldFile2:
oldList2.append(row)
f1.close()
f2.close()
print [row for row in oldList1 if row not in oldList2]
我得到这个错误:我认为这与我在版本3.5和这个代码是为2.7编写的有关?你知道吗
File "test3.py", line 18
print [row for row in oldList1 if row not in oldList2]
^
SyntaxError: Missing parentheses in call to 'print'
谢谢你的帮助
此外,如果您需要更高级的输出,您可以考虑使用
difflib
。这是nice tutorial和fitting question第一个代码的问题是您正在拆分整个文件,这将按空格(而不仅仅是新行)拆分文件。你知道吗
您只需将拆分的行压缩,然后将单词比较在一起:
第二个代码的问题很简单,‘print’在python2和python3中的工作方式不同。如果只添加一个圆括号,它应该可以工作,如下所示:
相关问题 更多 >
编程相关推荐