Regex nächste Zeile

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
andr3as93
User
Beiträge: 9
Registriert: Montag 7. September 2015, 08:02

Also ich hab jetz wirklich alles erdenkliche ausprobiert aber bekomme das nicht hin.. wenn ich nach anderen Zeilen suche funktioniert es komischerweise

Code: Alles auswählen

#!/usr/bin/env python2.7
# encoding: utf-8
import codecs
import os
import glob
from collections import defaultdict
import json
import csv
     
REPORTS_PATH = "./reports/"
     
TAGS = {
        "charge": u"Schmelzen-Nr./ Heat No. / No.de coule :",
        "actual": u"Ist / Actual / Actuel",
        "selon": u"Die Lieferung wurde US-geprüft nach / Delivery US-checked acc.to / Livraison contrôlé par ultrasons selon : ",
        "doformation": u"Umformgrad/ Hot forming ratio / Ratio de déformation :",
        "largeur": u"Durchm./Breite/ Diameter/width / Diamètre/largeur :",
}
TAGS_TWO_LINES = {
        "Eprouvette": u"Proben-Nr./Specimen-No./ No.d’eprouvette 1. Prfl. / Spec. / Eprouvette 2. Prfl. / Spec. / Eprouvette 3. Prfl. / Spec. / Eprouvette",
        "Probe": u"Rpo.2[MPa (N/mm²)] Rm[MPa (N/mm²)] A5[%] Z[%]",
}
     
lines = []
for report_filename in glob.iglob(os.path.join(REPORTS_PATH, '*')):
        print("\n----- FILE -----")
        print(report_filename + "\n")
     
        file_content = codecs.open(report_filename, mode='r', errors='ignore', encoding='utf-8')
     
        data = defaultdict(list)
        for line in file_content:
            for tag, identifier in TAGS.iteritems():
                if line.startswith(identifier):
                    data[tag].append(line[len(identifier):].strip())
            for tag, identifier in TAGS_TWO_LINES.iteritems():
                if line.startswith(identifier):
                    data[tag].append(next(file_content).strip())
        lines.append(data)
        
#excel_export_file.close()
 
print("\n\n----- JSON DATA -----\n")
print(json.dumps(lines))
print("\n")
edit: erledigt ;) der mochte die sonderzeichen nicht!!
Zuletzt geändert von andr3as93 am Montag 7. September 2015, 13:33, insgesamt 1-mal geändert.
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

coulée ist noch falsch geschrieben und bei Probe fehlt noch der Anfang der Zeile:

Code: Alles auswählen

TAGS = {
        "charge": u"Schmelzen-Nr./ Heat No. / No.de coulée :",
        "actual": u"Ist / Actual / Actuel",
        "selon": u"Die Lieferung wurde US-geprüft nach / Delivery US-checked acc.to / Livraison contrôlé par ultrasons selon : ",
        "doformation": u"Umformgrad/ Hot forming ratio / Ratio de déformation :",
        "largeur": u"Durchm./Breite/ Diameter/width / Diamètre/largeur :",
}
TAGS_TWO_LINES = {
        "Eprouvette": u"Proben-Nr./Specimen-No./ No.d’eprouvette 1. Prfl. / Spec. / Eprouvette 2. Prfl. / Spec. / Eprouvette 3. Prfl. / Spec. / Eprouvette",
        "Probe": u"Proben-Nr./Specimen-No./ No.d’eprouvette Rpo.2[MPa (N/mm²)] Rm[MPa (N/mm²)] A5[%] Z[%]",
}
andr3as93
User
Beiträge: 9
Registriert: Montag 7. September 2015, 08:02

Danke, er mag einfach die Sonderzeichen nicht, wenn ich die komplett missachte funktioniert es :)
BlackJack

@andr3as93: Das ``errors='ignore'`` könnte das Problem sein beziehungsweise maskieren. Entweder sind die Eingabedaten UTF8 kodiert oder sie sind es nicht. Wenn sie es nicht sind, dann ist ignorieren der falsche Weg. Dann sollte man die tatsächliche Kodierung der Daten angeben.
Antworten