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)
谢谢这正是我需要的。