我在这里搜索了很多帖子,但是没有我可以在以下代码中实现
with open('TEST.txt') as f:
seen = set()
for line in f:
line_lower = line.lower()
if line_lower in seen and line_lower.strip():
print(line.strip())
else:
seen.add(line_lower)
我可以在TEST.txt文件中找到包含数百个URL的重复行。
但是,我需要删除这些重复项并创建一个新文本文件,其中删除了这些文件并保留所有其他网址。
我将使用r.status_code检查这个新创建的文件是否有404错误。
简而言之,我基本上需要帮助摆脱重复,所以我可以检查死链接。谢谢你的帮助。
答案 0 :(得分:0)
这是你可以使用的东西:
import linecache
with open('pizza11.txt') as f:
for i, l in enumerate(f):
pass
x=i+1
k=0
i=2
j=1
initial=linecache.getline('pizza11.txt', 1)
clean= open ('clean.txt','a')
clean.write(initial)
while i<(x+1):
a=linecache.getline('pizza11.txt', i)
while j<i:
b=linecache.getline('pizza11.txt', j)
if a==b:
k=k+1
j=j+1
if k==0:
clean= open ('clean.txt','a')
clean.write(a)
k=0
j=1
i=i+1
通过这个,您将遍历每一行并检查其前面的那些,如果没有与之前写入的行匹配,则将其添加到文档上。
pizza11是我的计算机上的文件的名称,这是一个文本文件,列表中有大量的东西,我用它来尝试这样的东西,你只需要将它更改为你的起始文件是。没有重复的输出文件将是clean.txt
答案 1 :(得分:0)
听起来很简单,但你所做的看起来过于复杂。我认为以下内容应该足够了:
with open('TEST.txt', 'r') as f:
unique_lines = set(f.readlines())
with open('TEST_no_dups.txt', 'w') as f:
f.writelines(unique_lines)
有几点需要注意:
f.readlines()
(它返回文件中所有行的列表)是完美的。f.writelines()
会在您的文件中写入一系列行,但使用集合会破坏行的顺序。因此,如果这对您很重要,我建议您使用f.writelines(sorted(unique_lines, key=whatever you need))