Как совершить поиск по двум файлам, игнорируя первые 10 символов
Есть код, который считывает из второго файла номера строк (STR-......) и по этим номерам ищет совпадение в первом файле и удаляет найденные.
Нужно изменить код так, чтобы номера строк (то есть первые 10 символов) игнорировались, поиск совершать по тексту, который идёт после 10 символов. Подскажите, как реализовать? Пробовал выставить [10:] - не помогло
with open("file1.txt", "r") as file, \
open("file2.txt", "r") as file2, \
open("file_done.txt", "w") as rezult:
lines2 = set(line.strip() for line in file2)
for line in file:
if line[:10] not in lines2:
rezult.write(line)
Содержимое file1:
STR-111111Я вас любил: любовь еще, быть может,
STR-222222В душе моей угасла не совсем;
Содержимое file2:
STR-333333Я вас любил: любовь еще, быть может,
Результат нужен такой:
STR-222222В душе моей угасла не совсем;
Номера строк в первом и втором файле не совпадают, поэтому надо искать только по тексту, который следует после номера и до конца строки.
Ответы (1 шт):
Вы пытаетесь сравнить последние 10 строк в каждой строке со строками в file2.txt :
lines2 = set(line.strip() for line in file2)
...
if line[:10] not in lines2:
Но можно обрезать первые 10 строк во всех файлах и проверять их схожесть.
lines2 = set(line.strip()[10:] for line in file2)
...
if line.strip()[10:] not in lines2:
Полный пример рабочего кода:
with open("file1.txt", "r") as file, \
open("file2.txt", "r") as file2, \
open("file_done.txt", "w") as rezult:
lines2 = set(line.strip()[10:] for line in file2)
for line in file:
if line.strip()[10:] not in lines2:
rezult.write(line)