我一直试图用python编写一个程序来读取两个文本文件并打印它们之间的文本差异。这两个文件相似,只是行号不同,因为插入了一些注释。我尝试使用difflib模块,但它给了我错误。
import difflib
from difflib import *
temp3=[]
temp4=[]
with open ("seqdetect",'r') as f:
with open ("seqdetect_2",'r') as g:
for item in f:
temp1 =item.split()
temp3.append(temp1)
for items in g:
temp2 =items.split()
temp4.append(temp2)
d = difflib.Differ()
diff = d.compare(temp3, temp4)
print ('\n'.join(diff))
你能提出一个替代方案吗。 当做, 马扬克
好的,我已经试过你的代码并发现了问题。
Differ.compare()
方法需要给定两个字符串列表,表示两个文本的行。但是,由于您的item.split()
调用,您的列表temp3
和temp4
是(一个字符长)字符串的列表。我不确定你到底想怎么处理那次分裂,所以我不确定最好的解决办法是什么。如果您真的希望它告诉您已添加或删除的单个字符,则可以将对
append()
的调用替换为两个for循环中的extend()
。但坦率地说,这似乎不是很有用。分裂更有可能是一个错误。不要在文件中的行上循环,只需使用
readlines()
将它们全部读入列表,然后让不同的人对它们进行处理。如果您想对计算为差异的内容(忽略空白差异或其他内容)进行一些筛选,您应该探索difflib documentation,并传递一个适当的函数作为Differ的构造函数的
linejunk
或charjunk
参数。相关问题 更多 >
编程相关推荐