Python 2.7 仅按标题删除重复行

Python 2.7 仅按标题删除重复行,python-2.7,text-files,duplicate-removal,Python 2.7,Text Files,Duplicate Removal,我试图修改一个脚本,以便它只使用该行的标题部分从文本文件中删除重复的行 要澄清文本文件行,请执行以下操作: Title|Image Url|Description|Page Url 目前,脚本确实删除了重复项,但它是通过读取整行而不是第一部分来完成的。文件中的所有行不会100%相同,但有几行非常相似 我想删除所有包含相同“标题”的行,不管行的其余部分包含什么 这是我正在使用的脚本: import sys from collections import OrderedDict infile =

我试图修改一个脚本,以便它只使用该行的标题部分从文本文件中删除重复的行

要澄清文本文件行,请执行以下操作:

Title|Image Url|Description|Page Url
目前,脚本确实删除了重复项,但它是通过读取整行而不是第一部分来完成的。文件中的所有行不会100%相同,但有几行非常相似

我想删除所有包含相同“标题”的行,不管行的其余部分包含什么

这是我正在使用的脚本:

import sys
from collections import OrderedDict

infile = "testfile.txt"
outfile = "outfile.txt"
inf = open(infile,"r")
lines = inf.readlines()

inf.close()

newset = list(OrderedDict.fromkeys(lines))
outf = open(outfile,"w")
lstline = len(newset)
for i in range(0,lstline):
   ln = newset[i]
   outf.write(ln)
outf.close()
到目前为止,我已尝试使用
.split()
拆分列表中的行。我还尝试了
.readline(第[0:25]行]
,希望使用字符限制来实现所需的结果,但到目前为止运气不佳。我似乎也找不到任何关于我的确切问题的文档,所以我被卡住了


如果有帮助的话,我将在这个项目中使用Windows 8和Python 2.7.9。

我对您设置的程序做了一些更改。首先,我将您的文件交互更改为使用“with”语句,因为这些语句非常方便,可以自动处理您必须编写的许多功能。其次,我使用了
set
而不是
orderedict
,因为您基本上只是试图通过在orderedict中使用键来模拟set功能(元素的排他性)。如果标题未被使用,它会将其添加到集合中,以便不能再次使用,并将该行打印到输出文件中。如果它被使用过,它会继续运行。我希望这对你有帮助

with open("testfile.txt") as infile:
    with open("outfile.txt",'w') as outfile:
        titleset = set()

        for line in infile:
            title =  line.split('|')[0]
            if title not in titleset:
                titleset.add(title)
                outfile.write(line)

谢谢这正是我需要的。