Как удалить одну строку из TXT-файла, который содержит часть той же информации в других строках

...

63935.20180626113948_1.jpg 579 354 1 470 354 470 416 579 416 человек 63935.20180626113948_1.jpg 793 312 1 959 312 959 459 793 459 животных 65525.20180622214317_1.jpg 637 308 1 537 308 537 569 637 569 человек 65557.20180625043513_1.jpg 1 278 433 138 433 138 625 278 625 Животное 65557.20180625043513_1.jpg 1 738 159 495 159 495 28 738 28 человек

...

это часть строк в этом текстовом файле, жирная строка показывает, что для одного и того же файла jpg есть две разные аннотации.

Есть ли в любом случае удалить одну из этих повторяющихся строк и просто оставить другую.

сделать список таким:

...

63935.20180626113948_1.jpg 1 793 312 959 312 959 459 793 459 животных 65525.20180622214317_1.jpg 1 637 308 537 308 537 569 637 569 человек
65557.20180625043513_1.jpg 1 738 159 495 159 495 28 738 28 человек

...

1 ответ

Как вы не упомянули, какие строки вы хотите сохранить в text file(последний или первый). Я предполагаю, что вам нужен последний. Вы можете использовать dictionary и сохраните имя файла изображения (63935.20180626113948_1.jpg) в качестве ключа и обновите ключи, когда вы читаете файл. Как только словарь обновлен, вы можете записать его содержимое обратно в тот же file,

with open('/path/to/file') as fp:
    lines = fp.readlines()

temp_dict = {}
for line in lines:
    line_split = line.split()
    temp_dict[line_split[0]] = line

with open('/path/to/file') as fp:
    for key in temp_dict:
        fp.write(temp_dict[key])
        fp.write('\n')
Другие вопросы по тегам