Forum: PC-Programmierung Konvertierungen von z.B. CSV Dateien - gibt es einen einfacheren Weg?


von Tom (Gast)


Lesenswert?

Hallo liebe Forumsgemeinde,

da in unserer Firma sehr viel "manuell" gemacht wird, habe ich immer 
wieder Skripte (meist Python) geschrieben, die CSV Datein so "umnudeln", 
dass sie von einer anderen Applikation/Maschinen gelesen werden können.

Blöd ist nur  - ich bin einer der einzige bin (wir sind kleines 
Handelsunternehmen), der sowas kann.


Ist also quasi ein Hobby von mir (nicht mein eigentlicher Job...); die 
Leute bei uns sind alle total begeistert etwas neues zu lernen - aber 
halt "hartes Programmieren" ist zu viel; habe an VBA in Zukunft gedacht, 
was sie ggf. selbst dann lernen.  Gibt es eine besser Lösung für 
"non-programers ;-)"


Danke für Ideen!

Tom

von oszi40 (Gast)


Lesenswert?

Tom schrieb:
> CSV Datein so "umnudeln"

Einfache Sachen lassen sich auch mit Excel bearbeiten und wieder als 
.csv abspeichern. Ein Excel-Lehrgang für Fortgeschrittene sollte das 
enthalten?

von Heiner (Gast)


Lesenswert?

Tom schrieb:
> CSV Datein so "umnudeln",
> dass sie von einer anderen Applikation/Maschinen gelesen werden können.

Was sind dabei die Aufgaben? Spalten vertauschen, Feldtrenner ändern, 
Zeilen Filtern, irgendwelche Umrechnungen, ...?

Vor allem frage ich mich, ob die Aufgabe nicht vielleicht händisch in 
Excel und Co. zu erledigen sein könnte. Das ist weniger bequem, stellt 
aber gleichzeitig auch viel niedrigere Anforderungen an den Anwender.


Tom schrieb:
> "hartes Programmieren" ist zu viel

Dann viel Glück. Was macht denn "hartes" Programmieren aus? Rein 
subjektiv:
1. Ein gewisser Zeitaufwand, um die Konstrukte einer Sprache zu 
erlernen.
2. Die Fähigkeit, in formalen Strukturen zu denken.
3. Die Fähigkeit, Probleme zu abstrahieren und sukzessive in lösbare 
Teilprobleme herunterzubrechen.

An Punkt 1 kommt man nicht vorbei, egal ob es nun Python, VBA oder 
irgendetwas ganz anderes ist. Es gibt nichts geschenkt.

An Punkt 2 kommt man auch nicht vorbei. Ich hatte schon ein paar mal das 
"Vergnügen" mit Leuten, die einfach nicht in der Lage sind, sich an 
formale Regeln wir z.B. die Syntax einer Sprache zu halten, insbesondere 
diese "man weiß doch, was gemeint ist"-Typen. Selbst wenn du das Problem 
Syntax durch eine visuelle Programmiersprache (so etwas wie Scratch) 
oder durch einen geführten Prozess wie den Funktions-Assistenten aus 
Excel umgehen könntest, scheitert man dann spätestens in dem Moment, in 
dem so etwas wie reguläre Ausdrücke erforderlich wird.

Und an Punkt 3 kommt man höchstens bei Trivialproblemen vorbei.


Ich halte Python bereits für eine gute Lösung und irgendeine 
Skriptsprache wird es sowieso werden, denn das ist genau der Ansatz für 
solche Problemstellungen. Wenn es niemanden gibt, der das wenigstens auf 
dem Niveau erlernen kann, dass er ein bereits vorhandenes Programm an 
die aktuellen Bedürfnisse anpassen kann, wird sich der Chef wohl andere 
Wege einfallen lassen müssen, um deinen Bus-Faktor zu reduzieren.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Python geht IMHO schon in die richtige Richtung, ist aber evtl. zu 
vielseitig für die konkrete Aufgabenstellungen, weswegen sich einige 
damit überfordert fühlen könnten. Ich würde deswegen unter 
Berücksichtigung der bisher durchgeführten "Umnudeleien" eine ganz 
einfache, speziell auf die konkreten Bedürfnisse zugeschnittene DSL 
entwerfen und diese als Python-Modul umsetzen.

Das Ziel sollte dabei sein, die allermeisten der aktuell und zukünftig 
genutzten Konverter in maximal 5 bis 10 Codezeilen unter Verwendung 
einer sehr begrenzten Zahl von Sprachelementen implementieren zu können.

Dazu müssen die Kollegen nur ein paar Grundlagen von Python und eben die 
einfache DSL erlernen. Das kann, am besten anhand einiger Beispiele für 
reale Aufgabenstellungen, sehr schnell geschehen.

von Mike B. (mike_b97) Benutzerseite


Lesenswert?

Wieviele unterschiedliche csv's sind denn so zu bearbeiten?
Ständig/regelmäßig neue oder immer wieder dieselben
also z.B. jeder der 20 Kunden schickt ein anderes Format aber es sind 
eben auch halbwegs konstant nur die ~20 Kunden.

Wie es scheint gibt es hier ein Problem mit den Datenschnittstellen das 
standardisiert werden sollte, eben um langfristig deine Arbeistzeit 
sinnvoller verwenden zu können.

: Bearbeitet durch User
von bingo (Gast)


Lesenswert?

csv2xslx gibt es wie Sand am Meer, sogar in PyPi

von Jemand (Gast)


Lesenswert?

Tom schrieb:
> da in unserer Firma sehr viel "manuell" gemacht wird, habe ich immer
> wieder Skripte (meist Python) geschrieben, die CSV Datein so "umnudeln",
> dass sie von einer anderen Applikation/Maschinen gelesen werden können.
>
> Blöd ist nur  - ich bin einer der einzige bin (wir sind kleines
> Handelsunternehmen), der sowas kann.
>
> Ist also quasi ein Hobby von mir (nicht mein eigentlicher Job...); die
> Leute bei uns sind alle total begeistert etwas neues zu lernen - aber
> halt "hartes Programmieren" ist zu viel; habe an VBA in Zukunft gedacht,
> was sie ggf. selbst dann lernen.  Gibt es eine besser Lösung für
> "non-programers ;-)"

Hm... um Python mit dem csv-Modul zu benutzen, muß man vermutlich nicht 
den gesamten Sprachumfang beherrschen -- hat aber den Vorteil, ihn 
ausnutzen zu können, sofern sich dies einmal als notwendig erweisen 
sollte.

Ansonsten gibt es natürlich das (in Python geschriebene) CSVKit [1] und 
den mächtigen Datenkonverter Logstash [2] aus dem ELK-Stack -- der zwar 
im Kern für Logdaten und Metriken vorgesehen ist, aber sehr viel mehr 
kann...

[1] https://csvkit.readthedocs.io/en/latest/
[2] https://www.elastic.co/guide/en/logstash/current/introduction.html

von 🐧 DPA 🐧 (Gast)


Lesenswert?

CSVKit kann ich auch empfehlen. Besonders das csvsql Kommando darin 
finde ich unglaublich praktisch.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.