Данные взяты из таблицы в формате PDF, которая извлекается путем преобразования в текст (с использованием pdftotext). Это пример любопытных данных, из которых я пытаюсь перехватить все строки в python, начиная с district1
до строки с Total
(в комплекте), но не содержит пустых строк (^ \ n) или строки с ключевыми словами, такими как Call
или Office
.
Regex Я пробовал
Также применен флаг DOTALL . Я попытался захватить в python следующим образом: re.findall(r'District.*icts(.*Total.*?\n|\r)',input,re.DOTALL)
District.*icts(.*Total.*?\n|\r)
Вышеприведенное фиксирует (не просто совпадает) все между district1
и Total
(включительно). Но я хочу удалить захваченные строки или не захватывать строки, содержащие ключевое слово Call
или Office
. Поэтому я попытался применить отрицательный прогноз , но он тоже не сработал:
District.*icts(((?!Call|Office|^\n).)*Total.*?\n|\r)
Я был с этой проблемой целый день. У меня нет никакой другой идеи игнорировать эти строки и захватывать остальные. Мы будем благодарны за любую помощь.
ВОЗМОЖНЫЕ ВАРИАЦИИ ВХОДОВ
---dont capture this line----
District No. of positive cases admitted Other Districts
district1 7 1 district4
district2 6
district3 7 -
Call Centre:12323, 132123
Office:212332122 , 1056
district4 131
Total 263
---dont capture this line----
---dont capture this line----
District No. of positive cases admitted Other Districts
district1 7 1 district4
district2 6
Call Centre:12323, 132123
Office:212332122 , 1056
district3 7 -
district4 131
Total 263
---dont capture this line----
---dont capture this line----
District No. of positive cases admitted Other Districts
Call Centre:12323, 132123
district1 7 1 district4
district2 6
Office:212332122 , 1056
district3 7 -
district4 131
Total 263
---dont capture this line----
Требуется захват
district1 7 1 district4
district2 6
district3 7 -
district4 131
Total 263