ich schreibe zurzeit ein kleines Script, welches aus einer 17864 Zeilen langen Datei mehrere Informationen extrahiert.
Dann File sieht in Grunde genommen so aus:
Code: Alles auswählen
05.11.2014 Prüfung der Archivierbarkeit von Einkaufsbelegen 1
Übersicht: Prüfkennzeichen
1 erster Grund
2 zweiter Grund
3 dritter Grund
4 ...
5 ...
6 ...
7 ...
8 ...
9 ...
10 ...
11 ...
12 ...
13 ...
14 ...
15 ...
16 ...
17 ...
18 ...
19 ...
20 ...
21 ...
22 ...
23 ...
24 ...
05.11.2014 Prüfung der Archivierbarkeit von Einkaufsbelegen 2
Bestellung BArt Lieferant Name Ekg Best.Datum
Pos. PTyp Letzt.Vorg Stichtag Material Kurztext
PR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
'0123456789' 'PEIL' 40038133 Firmenname RP3 27.12.2007
'00001' 28.12.2007 05.11.2014 '87456123' GMA 99,7 Fremdmasseln VERZOL
'3' Grund drei
"0123456789" "PSB" 143 Firmenname RP4 18.07.2008
"00010" 18.07.2008 05.11.2013 "87456321" GMA 99,7 Verzollungsartikel
"14" Grund 14
"24" Grund 24
In diesem Ausschnitt gibt es zwei Datensätze:
Der erste sind die Strings in den einfachen Anführungszeichen und der zweite die in den Doppelten.
Die Anführungszeichen sind in der original Datei natürlich nicht vorhanden.
Habe bis jetzt auch schon dieses Script geschrieben:
Code: Alles auswählen
#!/usr/bin/env python
# # -*- coding: utf-8 -*-
import codecs
ueberschrift_muste = ["Bestellung BArt Lieferant Name Ekg Best.Datum",
"Pos. PTyp Letzt.Vorg Stichtag Material Kurztext",
"PR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24"]
seitenanfang = u"Prüfung der Archivierbarkeit von Einkaufsbelegen"
filename = "MM_ARCPREP.txt"
seiten = 0
zeilen = 0
sap_file = codecs.open(filename, 'r', encoding='iso 8859-15')
fehler = False
dateiende = False
while seiten != 2:
zeile = sap_file.readline()
if "\n" in zeile:
zeilen = zeilen + 1
if seitenanfang in zeile.rstrip():
seiten = seiten + 1
print "Neue Seite"
#ueberbrueckung der Leer und Uberschriftzeilen
for i in range(0,5):
sap_file.readline()
zeilen = zeilen + 1
while not dateiende:
bestellung_zeile = sap_file.readline()
if not bestellung_zeile:
#Dateiende
dateiende = True
break
zeilen = zeilen + 1
bestellung_zeile_split = bestellung_zeile.split(" ")
print bestellung_zeile
print "Bestellnummer", bestellung_zeile_split[0].replace(" ", "") #Bestellungsnummer
print "Bart", bestellung_zeile_split[1] #BART
print "Datum", bestellung_zeile_split[len(bestellung_zeile_split)-1] #Datum
pos_zeile = sap_file.readline()
zeilen = zeilen + 1
pos_zeile_split = pos_zeile.split()
print "Pos", pos_zeile_split[0] #Pos
print "Materialnummer", pos_zeile_split[3] #Materialnummer
fehler_zeile = sap_file.readline()
zeilen = zeilen + 1
fehler_zeile_split = fehler_zeile.split()
print "Fehler", fehler_zeile_split[0] #Fehler
fehler = True
while fehler:
cursor_pos = sap_file.tell()
print "Cursor_pos", cursor_pos
naechster_fehler = sap_file.readline()
print naechster_fehler
zeilen = zeilen + 1
if int(naechster_fehler[2:4]) <= 24:
print "Fehler" + naechster_fehler[2:4]
elif int(naechster_fehler[3:4]) <= 24 and not naechster_fehler[2:12].isdigit():
print "Fehler", naechster_fehler[3:4]
else:
fehler = False
print "Neues Material"
sap_file.seek(cursor_pos)
Code: Alles auswählen
' ' "0123456789" "PSB" 143 Firmenname RP4 18.07.2008
Code: Alles auswählen
"0123456789" "PSB" 143 Fi''rmenname RP4 18.07.2008