我写这篇文章是为了从文件行中删除重复项,并将没有重复项的行写入另一个文件。我收到了错误: " 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
答案 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)))
然后改变这个 - > 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)))