Python在txt文件中搜索网址

时间:2019-01-24 19:57:46

标签: python

我正在脚本中使用循环将大量网址写入这样的txt文件中:

fwrite = open('visited.txt', 'a')
fwrite.write('\n{0}'.format(url))
fwrite.close()

然后,当我稍后重新运行时,我不想处理访问的链接,因此我要这样做:(访问是新/旧URL的列表)

for x in visit:
    if x in open('visited.txt').read().lstrip('\r\n'):
        visit.remove(x)
    else:
        continue

但这总是跳过一半的行。如果有1000个网址,则只会删除其中的500个。在lstriprtsrip上都尝试过\n / \r\n,但无法管理

2 个答案:

答案 0 :(得分:1)

仅将行读入列表一次:

with open('visited.txt', 'r') as f:
    visited = f.readlines()

如果您只希望保留非访问者,则可以将两个列表都转换为集合,并从另一个列表中减去一个,然后再转换回列表:

non_visited = list(set(visit) - set(visited))

答案 1 :(得分:1)

这是Python for loop skipping every other loop?的副本,但为清楚起见,这里是针对这种情况的解决方案:

with open('visited.txt') as f:
    visited = f.read().splitlines()

visit = [url for url in visit if url not in visited]

顺便说一句,上下文管理使您的第一个代码片段更容易,并且我重新排列了\n,因为换行符是行终止符,而不是分隔符,尤其是在类似于Unix的操作系统:

with open('visited.txt', 'a') as fwrite:
    fwrite.write('{0}\n'.format(url))