От твоего исходного файла с текстом на выходе функции uniqar остаются лишь уникальные строки. Т.о. у меня есть текст, где встречаются одинаковые строки (например, команды в листингах, но их нет в файле B!) и после обработки на выходе не хватает строк =/ В заголовке ты написал, что нужно удалять только строки, которые етсь в файле B.
Берем файл text, в котором 100к строк. Я для примера взял чередующиеся строки. В файле lines только одна строка, которая встречается в text (поскольку строк 100к и они чередуются, то таких строк в text 50к). После выполнения твоего кода у меня остается лишь одна строка - которых было в text 50к и при этом небыло в lines! Допустим, что это ошибка. Не будем обрабатывать функцией uniqar исходный текст. Вот результат выполнения твоего кода:
real 1m15.745s
user 1m4.240s
sys 0m1.872s
Сразу сознаюсь, что я сначала не понял тебя и написал код для удаления слов из текста B в тексте A. Но я исправился :)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
lines = open('lines').readlines() # файл, из которого нужно брать строки и удалять в intxt
intxt = open('text').read() # файл, из которого нужно удалять строки, которые есть в lines
for line in lines:
intxt = intxt.replace(line, '')
with open('new', 'w') as n:
n.write(intxt.replace('\n\n', '\n'))
Скрипт удаляет все строки, какие есть в lines из text. Выполняем:
expee@localhost:~/dev/python$ time python hehe.py
real 0m0.087s
user 0m0.068s
sys 0m0.008s
Резальтат получаем правильный - в файле 50к строк и нет строк, которые есть в lines.