da hier ja zur Zeit nicht so viel los ist, passt es ganz gut, das ich mal wieder vor einem Problem stehe.
Mein Ziel ist es aus einer *.pdf - Datei gezielt einige Informationen zu lesen. Dass die Dateien mehr oder weniger willkürlich aufgebaut sein können habe ich von euch schon gelernt. Ich habe das Glück, dass ich problemlos mit `PyPDF2` den gesamten Text auslesen kann. Der Aufruf sieht so aus:
Code: Alles auswählen
pdf_pages = PdfReader(pdf, strict=True).pages
Code: Alles auswählen
'XX/XX/2019of 123456 Customer Order No. 987654 10 Page 5 From
'
'
'
'data
'
'Diesel Fuel type/Fuel mixture
'
'Machine ABCDE 12345
'
'- Tire, Diameter 250/18xy, steel
'
Code: Alles auswählen
Order No. 987654 of XX/XX/2019 Customer 123456 Page 5 From 10
data
Fuel type/Fuel mixture Diesel
Machine ABCDE 12345
-Tire, Diameter 250/18xy, steel
Mein Ziel ist ein Wörterbuch das so aussieht:
Code: Alles auswählen
{
'order_number': '123456',
'fuel': 'Diesel',
'machine_type': 'ABCDE 12345',
'tire_diameter': '250/18'
Ich habe mal alles reduziert um den ersten Schritt zu zeigen, das sieht so aus:
Code: Alles auswählen
from icecream import ic
import re
TEST_STRING = """XX/XX/2019of 123456 Customer Order No. 987654 10 Page 5 From
'
'
'
'data
'
'Diesel Fuel type/Fuel mixture
'
'Machine ABCDE 12345
'
'- Tire, Diameter 250/18xy, steel
'
"""
DETAILS_TO_BE_SEARCHED_EN = [
"Order No.",
"Machine",
"Fuel type/Fuel mixture",
"Tire, Diameter",
]
def order_details(text, pattern):
for pattern in pattern:
try:
search_result = re.search(pattern, text).group().strip()
except AttributeError:
search_result = ""
ic(search_result)
def main():
pattern = [
f"({key_word}(.*))|((.*){key_word})" for key_word in DETAILS_TO_BE_SEARCHED_EN
]
order_details(TEST_STRING, pattern)
if __name__ == "__main__":
main()
Code: Alles auswählen
ic| search_result: 'XX/XX/2019of 123456 Customer Order No.'
ic| search_result: "'Machine"
ic| search_result: "'Diesel Fuel type/Fuel mixture"
ic| search_result: "'- Tire, Diameter"
Könnt ihr mir bitte helfen, wie ich das am besten von Anfang an aufbauen könnte?
Vielen Dank und Grüße
Dennis