Python删除重复项

时间:2017-02-14 15:27:25

标签: python duplicates buffer

我写这篇文章是为了从文件行中删除重复项,并将没有重复项的行写入另一个文件。我收到了错误: " TypeError:期望一个字符缓冲区对象" 我该怎么做才能避免这种情况?

f2 = open('withoutduplicates.txt', 'w')
f1 = open('elements.txt')
lines = f1.readlines()
for i, line in enumerate(lines):
    L=[line]
    newlist=[ii for n,ii in enumerate(L) if ii not in L[:n]]
    f2.write(newlist)

f1.close()
f2.close()

文件f1(elements.txt)如下所示:

88208   89630   88744   89078   89659   89886   89886   89886   89886   354847  354844  356602  358593  89886   89886   89886   89886   358594  354848  356605  358675
88209   89633   89866   89646   90021   88661   88661   88661   88661   358601  358639  358641  358603  88661   88661   88661   88661   354386  354388  354387  354389
88210   89467   88530   89143   89146   89355   89355   89355   89355   353523  353519  356900  356915  89355   89355   89355   89355   357778  353521  356902  356914
88211   88842   88506   89364   88767   89784   89784   89784   89784   353343  353345  355014  355012  89784   89784   89784   89784   355412  353346  357806  355018
88212   1169    1167    88469   89586   89271   89271   89271   89271   97466   350978  353064  350985  89271   89271   89271   89271   350984  350979  353063  357449
88213   89720   88909   89665   89129   89411   89411   89411   89411   355781  355780  356837  356838  89411   89411   89411   89411   357967  355779  357965  356836

2 个答案:

答案 0 :(得分:0)

您正在尝试编写列表,根据输出的性质,我有两种情况。

1-如果你想得到这样的输出:
[' 88208 89630 88744 89078 89659 89886 89886 89886 89886 354847 354844 356602 358593 89886 89886 89886 89886 358594 354848 356605 358675']

...........
...........
然后改变这个 - > f2.write('{}\n'.format(str(newlist)))

  1. 这样的输出:
    88208 89630 88744 89078 89659 89886 89886 89886 89886 354847 354844 356602 358593 89886 89886 89886 89886 358594 354848 356605 358675
    ....... .......
  2. 然后改变这个 - > f2.write('{}\n'.format(newlist[0]))

答案 1 :(得分:0)

此代码有效并删除副本:

with open('file.txt', 'r') as f1:
    with open('withoutduplicates.txt', 'w') as f2:
        lines = f1.readlines()
        for line in lines:
            L = line.strip().split(' ')
            new_line = set([l.strip() for l in L if l])
            f2.write('{}\n'.format('  '.join(new_line)))