如何在使用for循环时防止输出文件中出现重复文本

时间:2012-07-24 20:16:19

标签: python duplicates

我有这个代码,它将一个数字与一个数字(我在代码中称为项目)中的数字进行比较,以查看它是否已存在。如果它然后打印到输出文件,如果它不打印那么只打印一次。

问题如何确保如果数字不在域范围之间,则只打印一次。 (我使用了真实和虚假的陈述,但这不起作用,因为当它是假的,它会在下面的代码上打印几个重复 - 我不知道如何实现,以便它打印一次不在域范围内的数字多次)

for item in lookup[uniprotID]:
    for varain in wholelookup[uniprotID]:
        for names in wholeline[uniprotID]:
            statement=False
    if re.search(r'\d+',varain).group(0)==item and start <= int(item) <= end:
        result = str(int(item) - start + 1)
        if varain in names.split(' '):
            statement = True
            print ">{0} | at position {1} | start= {2}, end= {3} | description: {4} | {5}".format(uniprotID, result, start, end, varain, names)
            if statement == True:
                print(''.join(makeList[start-1:end]))

2 个答案:

答案 0 :(得分:1)

存储不在范围内的值。

stored_prints = {}

if not ( start <= int( item ) <= end ):
    try:
        stored_prints[item]++
    except:
        stored_prints[item] = 1

print stored_prints

你必须根据自己的需要进行格式化和设计,但如果我理解你的问题,这应该做你需要做的事。

答案 1 :(得分:1)

基于此的东西可能对您有用:

already_seen = set()
for line in sys.stdin:
   if line not in already_seen:
      already_seen.add(line)
      sys.stdout.write(line)

不是说,如果你的文件很大,你最终可能会消耗大量的虚拟内存。如果是这样,请查看anydbm或bloom过滤器。