Удаление дубликатов в txt

задача такая: у меня есть .txt файл со ссылками. Каждый раз при запуске кода он парсит сайт и добавляет новые ссылки, но иногда попадаются уже использованные. Мне необходимо удалять все дублирующиеся ссылки + удалять их уникальные копии. К примеру: мне нужно изменить .txt со ссылками

abc.ru
bac.ru
abc.ru

на выходе .txt файл должен содержать

bac.ru

Ответы (3 шт):

Автор решения: Andy Pavlov

Можно сделать через конвертацию в список, который потом фильтруем по количеству упоминаний. Если имеем число отличное от единицы, то не включаем в новый список. Дальше join() в одну строку.

with open('www.txt') as file:
    rows = [row.strip() for row in file]
    filtered = [r for r in set(rows) if r and rows.count(r) == 1]
    filtered_string = '\n'.join(filtered)

Еще такой вариант в голову пришел после варианта eri с Counter:

with open('w.txt') as file:
    rows = [row.strip() for row in file]
    d = dict().fromkeys(rows, -1)
    for r in rows:
        d[r] += 1
    filtered = [k for k, v in d.items() if not v]

На выходе:

bac.ru
www.ru
→ Ссылка
Автор решения: eri
[e[0] for e in filter(
   lambda x: x[1]==1,
   collections.Counter(
       open('www.txt').readlines()
   ).most_common())
]
→ Ссылка
Автор решения: Dmitry

Такое решение

with open(".txt") as file:
    t_file = file.readlines()
    t_set = set(t_file)
    result = [i for i in t_set if t_file.count(i) == 1]

with open(".txt", "w") as file:
    file.write("\n".join(result))

Файл полностью перезаписывается новым содержимым, который исключает все дублирующие ссылки

→ Ссылка