У меня есть файл input.txt с разделителями табуляции, подобный этому
A B C
A B D
E F G
E F T
E F K
Они разделены табуляцией.
Я хочу удалить дубликаты только тогда, когда несколько строк имеют одинаковые 1-й и 2-й столбцы.
Итак, несмотря на то, что 1-я и 2-я строки в 3-м столбце различаются, они имеют одинаковые 1-й и 2-й столбцы, поэтому я хочу удалить «A B D», который появляется позже.
Итак, output.txt будет таким.
A B C
E F G
Если бы мне нужно было удалить дубликаты обычным способом, я просто превращаю списки в функцию «установить», и все готово.
Но теперь я пытаюсь удалить дубликаты, используя только «некоторые» столбцы.
Используя Excel, это так просто.
Данные -> Удалить дубликаты -> Выбрать столбцы
Используя MatLab, это тоже легко.
import input.txt -> Использовать «уникальную» функцию по отношению к 1-му и 2-му столбцам -> Удалить строки с номером «1»
Но, используя python, я не мог найти, как это сделать, потому что все, что я знал об удалении дубликатов, это использование «set» в python.
===========================
Это то, что я экспериментировал после ответа undefined_is_not_a_function.
Я не знаю, как перезаписать результат в output.txt и как изменить код, чтобы я мог указать столбцы, которые следует использовать для удаления дубликатов (например, 3 и 5).
import sys
input = sys.argv[1]
seen = set()
data = []
for line in input.splitlines():
key = tuple(line.split(None, 2)[0])
if key not in seen:
data.append(line)
seen.add(key)