Я закодировал извлечение PDF через Python и прочитал его в строку Python. Я пытаюсь извлечь данные из разных PDF-файлов, и структура адресов в каждом документе немного отличается. Вот пример:
Alamat :Menara Bank Mega, Lantai 24, Jl. Kapten P Tendean
Kav. 12-14A
Alamat :JL USMAN NO. 42, RT 8/4, KEL. KELAPA DUA WETAN,
KEC. PASAR REBO, JAKARTA TIMUR
Alamat :JL. HR. RASUNA SAID KAV 1-2, GRAHA IRAMA
LANTAI 6 KUNINGAN TIMUR- SETIABUDI JAKARTA
SELATAN
Alamat :GD. GRAHA PRATAMA LT.10, JL. MT. HARYONO
KAV.15, TEBET
AHUAlamat :GEDUNG BERITASATU PLAZA LT. 8, JL. JEND. GATOT
SUBROTO KAV. 35-36
Я ожидаю извлечь все после ":". Есть ли регулярное выражение, чтобы найти все вышеперечисленное?
Одним из возможных подходов является использование re.search():
(?:Alamat|AHUAlamat)
: группа без захвата, которая соответствует либо «Аламат», либо «АХУАламат».\s*
: соответствует любому количеству пробельных символов.:
: соответствует символу двоеточия.(.*)
: это группа захвата, которая соответствует любой последовательности символов, кроме новой строки.
import re
data_str = """Alamat :Menara Bank Mega, Lantai 24, Jl. Kapten P Tendean Kav. 12-14A
Alamat :JL USMAN NO. 42, RT 8/4, KEL. KELAPA DUA WETAN, KEC. PASAR REBO, JAKARTA TIMUR
Alamat :JL. HR. RASUNA SAID KAV 1-2, GRAHA IRAMA LANTAI 6 KUNINGAN TIMUR- SETIABUDI Jakarta SELATAN
Alamat :GD. GRAHA PRATAMA LT.10, JL. MT. HARYONO KAV.15, TEBET
AHUAlamat :GEDUNG BERITASATU PLAZA LT. 8, JL. JEND. GATOT SUBROTO KAV. 35-36
"""
pattern = r'(?:Alamat|AHUAlamat)\s*:(.*)'
addresses = data_str.splitlines()
for address in addresses:
match = re.search(pattern, address)
if match:
print(match.group(1).strip())
Примечание. Если каждая строка строки имеет одинаковую структуру с :
, то только split()
может выполнить эту работу:
lst_data = data_str.splitlines()
addresses = [address.split(':')[-1] for address in lst_data]
print(*addresses, sep='\n')
Menara Bank Mega, Lantai 24, Jl. Kapten P Tendean Kav. 12-14A
JL USMAN NO. 42, RT 8/4, KEL. KELAPA DUA WETAN, KEC. PASAR REBO, JAKARTA TIMUR
JL. HR. RASUNA SAID KAV 1-2, GRAHA IRAMA LANTAI 6 KUNINGAN TIMUR- SETIABUDI Jakarta SELATAN
GD. GRAHA PRATAMA LT.10, JL. MT. HARYONO KAV.15, TEBET
GEDUNG BERITASATU PLAZA LT. 8, JL. JEND. GATOT SUBROTO KAV. 35-36
Ваши данные afer: и заканчиваются пустой строкой, поэтому вы можете использовать это RegEx
/Alamat *:(((?!(\n\n|\r\n\r\n)).)*)/gms