Доброго времени.
Задача: парсинг больших лог файлов (в несколько Гб).
В скрипте задаю пул нужных адресов (переменная pull). Обрабатывая лог, я хочу получить на выходе файл, где не должно быть адресов, кроме тех, что есть в pull.
Непроблемные места я убрал, чтобы не нагружать лишним:
pull = ""
log = "путь_к_логу"
output = "путь_к_обработанному_файлу"
with open(log) as inp, open(output, "w") as out:
spis = inp.readlines()
for s in spis:
if not re.search('[{}]'.format(pull), s):
spis.remove(s)
Однако в итоге, я получаю часть адресов, которые совпадают с паттерном не полностью, например, может быть разрешенный набор “abcd”, а после обработки я получу “abcde”. Понятно, что он совпадает, но не полностью. Раньше я организовывал проверку через цикл поэлементно без регулярного выражения. К регулярным выражениям пришел, т.к. подсказали, что так код будет быстрее выполняться. Подскажите, пожалуйста, как организовать проверку по регулярному выражению, чтобы в итоге, каждый элемент состоял только из разрешенных в pull?