我已经收集了一大堆文本(在线报纸网站),通过使用Scrapy Framework进行抓取,我已经存储在&nbspidd.txt'文件。 txt文件大小差不多是240MB。
现在在这个txt文件中,我有几个字冗余。例如,单词' love'可以在该txt文件中看到多行。但是,我只需要一个单词' love'
我使用以下代码从我的大型&nbspidd.txt'中删除了冗余。文件。
file_object = open("nahidd.txt", "r", encoding='utf-8-sig')
file_object_all_text = file_object.read().split()
file_object_redundancy_removed = " ".join(sorted(set(file_object_all_text), key=file_object_all_text.index))
file_object = open("nahidd_pure.txt", "w", encoding='utf-8-sig')
file_object.write(file_object_redundancy_removed)
但问题是每当我在cmd中输入一个命令时。
scrapy runspider nahidBot.py
它工作得很好,但它需要永远(因为文件大小很大),我看到一个光标闪烁几个小时。很难理解我的命令是否仍然有效或者被绞死了。我只需要在cmd中显示某种文本,就像第1行处理过的','第2行处理过的'或完成的背景工作的百分比。这样任何人都可以理解剩下多少工作或理解我的命令仍在工作。
提前致谢。 纳希德
答案 0 :(得分:0)
此行执行sort
file_object_redundancy_removed = " ".join(sorted(set(file_object_all_text), key=file_object_all_text.index))
但在密钥中使用线性搜索,这对性能非常不利。
如果您不需要保留订单,请执行以下操作:
file_object_redundancy_removed = sorted(set(file_object_all_text))
如果您需要保留订单"正在发生",您尝试使用sort
进行模拟,更快捷的方法是将您已遇到的字词存储在辅助集:
marker = set()
file_object_redundancy_removed = []
for w in file_object_all_text:
if w not in marker:
marker.add(w)
file_object_redundancy_removed.append(w)
现在您已经删除了冗余列表,并保留了第一个单词出现的顺序。