如何删除重复的行并创建没有重复的新文件?

时间:2016-09-20 00:38:33

标签: python hyperlink duplicates

我在这里搜索了很多帖子,但是没有我可以在以下代码中实现

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错误。

简而言之,我基本上需要帮助摆脱重复,所以我可以检查死链接。谢谢你的帮助。

2 个答案:

答案 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))
  • 替换最后一行