bin neu im Forum und ziemlicher Python Anfänger. Lerne Python seit ein paar Wochen in der Uni und konnte es aber schon für die Arbeit gebrauchen. Ich sollte Laborversuche, die als pdf gespeichert waren in eine excel Datei übertragen. Dabei waren die Versuche des gleichen Typs immer in einer großen pdf, wobei jeder Versuch eine Seite groß war (ca. 200 Versuche, einzelne Seite immer gleich aufgebaut).
Ich habe die pdf dann einfach in eine txt-Datei umgewandelt und zum Glück wurden alle wichtigen Werte übertragen.
Habe dann ein Skript geschrieben, was die einzelnen Zeilen der Datei in eine Liste überträgt und dann nach bestimmten strings sucht. Anschließend wird die line auf den gesuchten Wert gekürzt und in die Ausgabedatei geschrieben.
Das Skript sieht so aus:
Code: Alles auswählen
with open('Atterberg_LA14.txt') as f: #vorher pdf in txt mit pdf24
lines = f.readlines() #am ende txt in excel importieren
with open("AusgabeAtterbergLA14.txt", "a") as g:
g.write('Entnahmestelle;Tiefe;Bodenart;Wassergehalt;Fließgrenze;Ausrollgrenze;Plastizitaetszahl;Konsistenzzahl;korr. Wassergehalt\n')
for line in lines:
if line.startswith('Entnahmestelle'):
line = line.lstrip('Entnahmestelle: ')
line = line.rstrip()
g.write(f"{line};")
elif "Tiefe:" in line:
line = line.split(':')[1]
line = line.lstrip()
line = line.rstrip()
g.write(f"{line};")
elif "Bodenart:" in line: #!!! Strich über den Nebenbodenarten fehlt, da nicht von pdf in txt übersetzt --> per hand nachtragen
line = line.split(':')[1]
line = line.lstrip()
line = line.rstrip()
g.write(f"{line};")
elif "Wassergehalt w =" in line and "[%]" not in line:
line = line.split('=')[1]
line = line.lstrip()
line = line.rstrip()
g.write(f"{line};")
elif "grenze wL =" in line: #für fließgrenze (scharfes ß wird nicht erkannt)
line = line.split('=')[1]
line = line.lstrip()
line = line.rstrip()
g.write(f"{line};")
elif "Ausrollgrenze wP =" in line:
line = line.split('=')[1]
line = line.lstrip()
line = line.rstrip()
g.write(f"{line};")
elif "szahl IP =" in line: #ä geht nicht
line = line.split('=')[1]
line = line.lstrip()
line = line.rstrip()
g.write(f"{line};")
elif "Konsistenzzahl IC =" in line:
line = line.split('=')[1]
line = line.lstrip()
line = line.rstrip()
g.write(f"{line}\n")
elif "Korr. Wassergehalt = " in line: #Korr Wassergehalte eine Zeile unter Probe falls vorhanden
line = line.split('=')[1]
line = line.lstrip()
line = line.rstrip()
g.write(f"{line}\n")
Die Ausgabe sieht dann so aus (als txt-Datei):
Entnahmestelle;Tiefe;Bodenart;Wassergehalt;Fließgrenze;Ausrollgrenze;Plastizitaetszahl;Konsistenzzahl
korr. Wassergehalt
Entnahmestelle;Tiefe;Bodenart;Wassergehalt;Fließgrenze;Ausrollgrenze;Plastizitaetszahl;Konsistenzzahl
Entnahmestelle;Tiefe;Bodenart;Wassergehalt;Fließgrenze;Ausrollgrenze;Plastizitaetszahl;Konsistenzzahl
korr. Wassergehalt
Entnahmestelle;Tiefe;Bodenart;Wassergehalt;Fließgrenze;Ausrollgrenze;Plastizitaetszahl;Konsistenzzahl
korr. Wassergehalt
Gibt ein Befehl der sowas sagt wie "schreibe {line} in die voherige Zeile" oder "lösche den letzten Absatz und schreibe {line}"?
Anschließend lese ich die txt-Datei dann in Excel ein und erhalte eine fertige Übersicht.
Das Skript an sich hat mir jetzt schon einen Haufen Arbeit gespart.
Es gibt bestimmt sehr viel bessere Methoden um das ganze zu machen, aber bin wie gesagt noch Anfänger.
Leider gibt es die Dateien nur im pdf Format.
Vielen Dank schon mal und Grüße
Mekkes