You are not logged in.

  • Login

Dear visitor, welcome to MastersForum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

  • "ZwerG_Michi_de" started this thread

Posts: 2,655

Location: Schweinfurt

Occupation: GER

  • Send private message

1

Sunday, September 6th 2009, 3:46pm

CSV Datei filtern

Ich möchte eine .csv Datei filtern. Damit meine ich: alle Zeilen, die in einer bestimmten Spalte einen Wert (oder keinen Wert) haben, sollen gelöscht werden. Die Ausgabe sollte am besten in einer seperaten Datei erfolgen.
Kann man das irgendwie mit Excel anstellen? Oder einem Freeware Tool?

Quoted

So einmal im Monat mit den Tieren im Fluß waschen wenn es "dein Herr" befiehlt Ragna?

Icey

Posts: 2,153

Location: Freiberg

Occupation: GER

  • Send private message

2

Sunday, September 6th 2009, 4:02pm

Naja wäre mit .net ruckzuck erledigt.

3

Sunday, September 6th 2009, 5:25pm

sollte doch auch mit Excel und Autofilter gehen? zumindest wenn die Bedingung nicht zu komplex is was rausfliegen soll

  • "ZwerG_Michi_de" started this thread

Posts: 2,655

Location: Schweinfurt

Occupation: GER

  • Send private message

4

Monday, September 7th 2009, 12:58pm

Quoted

Original von GWC_Vegeta
Naja wäre mit .net ruckzuck erledigt.

Großartige Hilfestellung, Dankesehr.



Quoted

Original von [AA]Hawk
sollte doch auch mit Excel und Autofilter gehen? zumindest wenn die Bedingung nicht zu komplex is was rausfliegen soll


Der Autofilter löscht die Zeilen ja nicht raus, sondern zeigt sie bloß nicht mehr an. Den Filter umgekehrt angewendet, alle Zeilen per "entf" gelöscht und dann die restlichen sortiert, so dass die gelöschten Zeilen unten sind. Das als .csv Datei gespeichert ergibt einen Quark (die angebliche CSV Datei wird nicht als solche erkannt, weil er nur ";" zwischen die Daten macht - aber die Texttrennzeichen zB. " " " nicht einfügt. Das ist irgendwie... scheiße.

sylence

Administrator

Posts: 1,863

Location: Dresden

Occupation: GER

  • Send private message

5

Monday, September 7th 2009, 1:01pm

Kenne CSV nicht, aber laut Wiki einfach ne Textdatei mit einer Zeile pro Datensatz. Nach diesem Beispiel würd ich einfach mit awk und Trennzeichen ";" drübergehen, da hast du direkten Zugriff auf die Spalten.

Edit: also am Beispiel

input.csv

Source code

1
2
3
4
Stunde;Montag;Dienstag;Mittwoch;Donnerstag;Freitag
1;Mathe;Deutsch;Englisch;Mathe;Kunst
2;Sport;Französisch;Geschichte;Sport;Geschichte
3;Sport;"Religion ev;kath";Kunst;Deutsch;Kunst


awk drüberlaufen lassen

Source code

1
awk -F';' '$2 !~ /Mathe/ && $4 !~ /Geschichte/ { print $0 }' < input.csv > output.csv

Der Befehl entfernt als Beispiel alle Zeilen, in denen in der zweiten Spalte "Mathe" oder in der vierten Spalte "Geschichte" steht. Zwischen den "/" stehen reguläre Ausdrücke, d.h. mit genug Phantasie kann man hier so ziemlich alles tun. :)

output.csv

Source code

1
2
Stunde;Montag;Dienstag;Mittwoch;Donnerstag;Freitag
3;Sport;"Religion ev;kath";Kunst;Deutsch;Kunst

6

Monday, September 7th 2009, 1:56pm

Quoted

Der Autofilter löscht die Zeilen ja nicht raus, sondern zeigt sie bloß nicht mehr an.


Ergebnisbereich kopieren und in leeres Blatt einfügen ist eine mögliche Lösung dafür

was beim Speichern als *.csv schiefgehen soll kannn ich ned nachvollziehen, sieht bei mir eigentlich gut aus

Posts: 2,153

Location: Freiberg

Occupation: GER

  • Send private message

7

Monday, September 7th 2009, 3:28pm

Quoted

Original von ZwerG_Michi_de

Quoted

Original von GWC_Vegeta
Naja wäre mit .net ruckzuck erledigt.

Großartige Hilfestellung, Dankesehr.


Hätte dir das prog in 10 minuten geschrieben, aber ok dann halt nicht.

  • "ZwerG_Michi_de" started this thread

Posts: 2,655

Location: Schweinfurt

Occupation: GER

  • Send private message

8

Monday, September 7th 2009, 7:39pm

Danke an alle, die konstruktiv geholfen haben.
Das Problem ist, dass Excell die Daten mit ; seperiert, aber die Textteile nicht mit " trennt. Was eigentlich geläufig ist... mit open office hab ichs dann richtig abspeichern können.

ZwerG_DarkMan

Professional

Posts: 1,308

Location: Würzburg

Occupation: GER

  • Send private message

9

Tuesday, September 8th 2009, 12:39am

Excel funktioniert leider bis zum heutigen Tag mit CSV-Dateien nicht besonders gut, vor allem beim Speichern von Zahlen, Uhrzeiten und Währungen. Blöd dabei ist, dass Excel die Standardeinstellungn aus den Regions- und Sprachoptionen in der Systemsteuerung nimmt. Da ist OO viel besser weil man beim Öffnen der Datei immer das Texttrennzeichen (meist Anführungszeichen) und das Feldtrennzeichen(meist Komma) direkt auswählen kann. Es stimmt übrigens nicht, dass ein CSV-Datensatz immer über eine Zeile gehen muss. Er kann auch über mehrere Zeilen gehen, so dass man auch Zeilenumbrüche mit CSV-Dateien abbilden kann, d.h. Text mit Zeilenumbrüchen in eine Spalte schreiben kann. Genau dazu und dazu innerhalb eines Wertes auch das Feldtrennezeichen nutzen zu können ist das Texttrennzeichen ja da.

This post has been edited 1 times, last edit by "ZwerG_DarkMan" (Sep 8th 2009, 12:41am)