Reputation: 499
i need to delete numbers that are iterated more than once .. if i know the repeated numbers already. Should i have two files .. one for the real numbers i have " data .txt ". and the other contains the numbers which are iterated " columns.txt" .. it is just for searching quickly the repeated numbers – As the file is too huge to delete it manually so i saved the repeated numbers in a file .. how can i make right loop for searching from a file to another file and if it find it .. just delete the repeated and keep one of them only the code i tried to implement like
infile = "/home/user/Desktop/data.txt"
outfile = "/home/user/Desktop/new.txt"
numbers="/home/user/Desktop/columns.txt"
with open(infile) as fin, open(outfile, "w+") as ft:
for line in fin:
for number in numbers:
line = line.replace(number, "")
ft.write(line)
but still have a problem .. the loop deleted all numbers that are iterated and i need to keep one of them only .. not delete all repeated
data.txt
53.74270106
60.45828786
50.08396881
119.2588545
119.2588545
119.2588545
119.2588545
119.2588545
119.2588545
119.2588545
8.391147123
3.998351513
it should be like this
53.74270106
60.45828786
50.08396881
119.2588545
8.391147123
3.998351513
i need to delete the number if it appears only sequentially
Upvotes: 1
Views: 74
Reputation: 1387
I think the set is better
a_set = set()
with open ('data2.txt') as f:
for line in f:
a_set.add(line)
print(a_set)
{'3.998351513', '50.08396881\n', '60.45828786\n', '119.2588545\n', '8.391147123\n', '53.74270106\n'}
Upvotes: 0
Reputation: 7113
If you are on python 3.6+ then this solution will work for you. This way you dont need to have a list where you already know the repeated numbers, python will do that for you.
If you are not using python 3.6+ then change dict.fromkeys
to collections.OrderedDict.fromkeys
.
with open('data.txt') as file:
lines = dict.fromkeys(line.strip() for line in file)
with open('out.txt', 'w') as file:
file.writelines('\n'.join(lines))
Output
53.74270106
60.45828786
50.08396881
119.2588545
8.391147123
3.998351513
Upvotes: 1