如何在Python中删除输出文件中的重复条目?

时间:2013-11-04 00:21:12

标签: python

我是Python的新手。我正在尝试以以下格式从文本文件中提取数据:

85729块寻址索引近似文本检索

85730自动查询扩展基于分歧 等...

输出文本文件是单词列表,但没有重复条目。输入的文本文件可能有重复项。输出将如下所示:

寻址

索引

近似

等...

到目前为止我的代码,我能够获得单词列表,但包含重复项。我在输入文件之前尝试检查重复项,但输出没有反映出来。有什么建议?我的代码:

infile = open("paper.txt", 'r')
outfile = open("vocab.txt", 'r+a')
lines = infile.readlines()
for i in lines:
   thisline = i.split()
   for word in thisline:
       digit = word.isdigit()
       found = False
       for line in outfile:
            if word in line:
                found = True
                break  
       if (digit == False) and (found == False ):   
                    outfile.write(word);
                    outfile.write("\n");

我不明白如何在Python中关闭循环。在C ++或Java中,花括号可用于定义for循环的主体,但我不确定它是如何在Python中完成的。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

Python循环由dedenting关闭;左边的空白具有语义含义。这可以避免你疯狂地输入花括号或者/ od或者其他什么,并且可以消除一类错误,其中你的缩进意外地无法准确地反映你的控制流。

您的输入似乎不足以证明输出文件的循环(如果确实如此,我可能会使用gdbm表),所以您可以做这样的事情(非常简单地测试) :

#!/usr/local/cpython-3.3/bin/python

with open('/etc/crontab', 'r') as infile, open('output.txt', 'w') as outfile:
    seen = set()
    for line in infile:
        for word in line.split():
            if word not in seen:
                seen.add(word)
                outfile.write('{}\n'.format(word))