所以我正在尝试制作一个机器人,在比较两个文本文件(使用requests.get('url=').text
方法生成(后发送消息,仅显示新行/文本/已添加/删除的任何行/文本。
我知道有difflib。HtmlDiff(make_file())
不适合我,因为它只会在文件中弄得一团糟。另外,据我所知,它只需要输出一个 html 文件。然后你在浏览器中打开它,然后乌拉!你有比较。
我尝试搜索,但找不到仅输出已更改/添加的文本的库。
目前我这样做了:
def htmlCompare(prep_id=None):
while True:
prep_url = requests.get(prep_template.format(prep_id))
c1 = prep_url
c2 = ''
if c2 != c1:
compare = difflib.HtmlDiff().make_file(fromlines=c1, tolines=c2, numlines=1)
c2 = c1
config_compare_save = open('compare_{}_main.txt'.format(prep_id), 'w')
config_compare_save.write(compare)
config_compare_save.close()
else: # don't mind this meaningless condition for now, I left this for something for later :)
time.sleep(10)
但正如你所看到的,这并没有给我我需要的结果。尝试使用Differ()
,但看起来我不知道如何使用它。甚至不确定这是否是我首先需要使用的方法。但据我所知,这是最接近我可能必须使用的内容。
问题:尝试使用 Differ((, ...据我所知,这是最接近我可能必须使用的内容。
注意:只有..._data
的第一行相等!
import difflib
_old_data = "refno,title,author,year,pricen
1001,CPP,MILTON,2008,456n
1002,JAVA,Gilson,2002,456n
1003,Adobe Flex,,2010,566n
1004,General Knowledge,Sinson,2007,465n
1005,Actionscript,Gilto,2008,480n".splitlines(keepends=False)
_new_data = "refno,title,author,year,pricen
1001,CPP,MILTON,2010,456,2008n
1002,JAVA,Gilson,2002n
1003,Adobe Flexi,Johnson,2010,566n
1004,General Knowledge,Simpson,2007,465n
105,Action script,Gilto,2008,480n
2000,Drama,DayoNe,,2020,560n".splitlines(keepends=False)
diff = difflib.Differ()
for line in diff.compare(_old_data, _new_data):
if line.startswith(('?',' ')):
# Skip diff control lines ?
# Skip equal lines ' '
pass
else:
#print(line[2:])
print(line)
Qutput:- 1001,CPP,MILTON,2008,456+ 1001,CPP,MILTON,2010,456,2008- 1002,JAVA,Gilson,2002,456+ 1002,JAVA,Gilson,2002- 1003,Adobe Flex,,2010,566+ 1003,Adobe Flexi,Johnson,2010,566- 1004,常识,Sinson,2007,465+ 1004,常识,辛普森,2007,465- 1005,动作脚本,吉尔托,2008,480+105
,动作脚本,吉尔托,2008,480
+ 2000,戏剧,DayoNe,,2020,560
用 Python 测试:3.4.2