Seite 1 von 1

CSV verarbeiten

Verfasst: Donnerstag 17. Juli 2014, 00:33
von Travis83
Hallo meine Lieben,

ich hänge seit Tagen an einem recht "simplen" Programmierproblem das mir den Schlaf raubt! Ich möchte aus einer txt. Datei ("Test.txt") die sehr viele Informationen über Fahrzeuge enthält nur ganz bestimmte in einer Tabellenform (csv) rausschreiben.

Der Input ist:

Code: Alles auswählen

f = file("Test.txt", "r")
for line in f: 
    print line 
f.close()
Auf dem Terminal erhalte ich als Ausgabe:

G-Nr.(DMS-Lagernr.): MX228048

BMW 520d Touring, Dienstwagen, 1995ccm, 4 Zylinder, 135 KW, EZ: 16.07.2013, 9902 km, Anzahl Vorbesitzer: 1, Fahrgestellnummer: WBA5J31040D067208, Standplatz MXF/VORLAUF/Vorlauf (automatisch)

Alpinweiss uni, Leder Dakota Schwarz/Schwarz, Auto Start Stop Funktion, Brake Energy Regeneration, Automatic Getriebe Steptronic, Lenkradheizung, Alarmanlage, Automatische Heckklappenbetätigung...


G-Nr.(DMS-Lagernr.): MX228053

BMW 330d xDrive Touring, Dienstwagen, 2993ccm, 6 Zylinder, 190 KW, EZ: 29.08.2013, 19018 km, Anzahl Vorbesitzer: 1, Fahrgestellnummer: WBA3L31020F994231, Standplatz MXF/VORLAUF/Vorlauf (automatisch)

Saphirschwarz metallic, Leder Dakota Schwarz/Schwarz, Sport-Automatic Getriebe Steptronic, Adaptives Fahrwerk, Variable Sportlenkung, Lenkradheizung, Multifunktion für Lenkrad, Dachreling schwarz, Rückfahrkamera, Alarmanlage, Komfortzugang, Interieurleisten Aluminium Längsschliff, Armauflage vorn. verschiebbar, Akzentleisten schwarz hochglänzend, Panorama Glasdach, Sonnenschutzverglasung, Innen- und Außenspiegel automatisch abbl, Innenspiegel automatisch abblendend, Raucherpaket, Sitzverstellung. elektrisch mit Memory f, Durchladesystem. 40:20:40 teilbar, Sportsitze für Fahrer und Beifahrer, Lordosenstütze für Fahrer und Beifahrer, Ablagenpaket, Sitzheizung für Fahrer und Beifahrer, Sitzheizung für Fondsitze, Fernlichtassistent, Active Protection, Driving Assistant...

und noch ca 400 mehr

Aus den ganzen Daten benötige ich nur die Informationen in (Tabellen) Form :

ID G-Nr. Modell Preis
1 MX228053 BMW 330d 24.000,-
2 MX228048 BMW 520d 33.000,-
...


Ich wäre für jede Hilfe sehr dankbar, ich habe bisher fast nur mit Arrays gearbeitet aber txt und cvs sind mir total unbekannt, in den ganzen Foren konnte ich bisher nichts nützliches finden oder sehen :(

LG

Re: CSV verarbeiten

Verfasst: Donnerstag 17. Juli 2014, 07:48
von Sirius3
Travis83 hat geschrieben:ich habe bisher fast nur mit Arrays gearbeitet
Dann fang mal an, Dich mit Hilfe eines Tutorials mit String-Funktionen und Listen vertraut zu machen.

Re: CSV verarbeiten

Verfasst: Donnerstag 17. Juli 2014, 08:24
von BlackJack
@Travis83: Ich würde mal sagen es ist unmöglich Preisinformation aus Daten zu ziehen die gar keine Preisinformationen enthalten. ;-)

Mir ist auch nicht so ganz klar wie Du die Modellinformation extrahierst. Klar, bei den beiden Fahrzeugen im Beispiel ist ein Muster zu erkennen, aber geht das tatsächlich für die ganzen 400 Datensätze auf diese Weise?

Ansonsten werfe ich noch den allgemeinen Tipp `itertools`-Modul in den Raum, und zerlege das Problem in kleinere Teilprobleme, und die Teilprobleme wieder in kleinere Teilprobleme, bis sich die zerlegten Probleme einfach mit Code lösen lassen. Und aus den Lösungen zu den Teilproblemen, lässt sich dann eine Lösung der zerlegten Probleme bis hin zum Gesamtprogramm zusammensetzen. Beispiel: Problem eine Datei mit Abschnitten für 400 Fahrzeuge zu verarbeiten, kann man zerlegen in das Verarbeiten eines Abschnitts für ein Fahrzeug, und das Aufteilen der Eingabedaten in Abschnitte pro Fahrzeug und das Aufrufen der Funktion für das verarbeiten eines Fahrzeugs in einer Schleife.

Re: CSV verarbeiten

Verfasst: Donnerstag 17. Juli 2014, 08:32
von bfm
Hallo,

für CSV-Dateien gibt es im Standard schon ein Modul.
Hier mal ein Link auf die Doku in 3.2 (ggfs auf die verwendete Pythonversion anpassen)
https://docs.python.org/3.2/library/csv.html

Ansonsten könnte man (Bandwurm)Strings noch per 'slicing' oder mit der Methode 'split' zerpflücken (siehe Tutorial bzw Doku zu Strings)

Hier ein Link auf das Tutorial in der Pythondoku, wo man sich grundlegendes Wissen über Python aneigenen kann:
https://docs.python.org/3.2/tutorial/index.html

Viel Spaß und natürlich Erfolg!