none
CSV Import in Array, leere Zeilen löschen RRS feed

  • Frage

  • Guten Morgen zusammen,

    wir wollen aus unserem Tool zur Dokumentation (DocuSnap) die Kennwortlisten der Kunden exportieren und in KeePass wieder importieren. (der Wechsel soll dauerhaft sein, also ohne laufende Synchronisation)
    DocuSnap kann zwar in CSVs exportieren, erstellt dabei aber ein unmögliches Layout mit vielen leeren Zeilen und sinnlosen Informationen.

    Die CSVs möchte ich jetzt in ein multidimensionales Array einlesen, alle Zeilen löschen, bei denen die erste Spalte (Titel des Eintrags) leer ist und sie dann im richtigen Format für Keepass wieder speichern. 

    Die ersten sinnlosen Zeilen zu löschen war kein Problem, da die wichtige Tabelle überschriften hat und ich nur alle Zeilen bis zur Überschrift aus dem Array löschen musste. 
    Mein Problem sind jetzt die (fast) leeren Zeilen am Ende. Die erste Spalte ist zwar immer leer, aber ich weiß nicht, wie ich die If-Abfrage dafür hinbekomme. Ich habe es mit "", " " (also ein Leerzeichen) und mit $null versucht, aber nichts davon trifft auf die leere Spalte zu. In der PS Ausgabe tauchen sie aber leer auf. Die entsprechenden Zeilen der CSV habe ich in den Beitrag kopiert.

    Kann mir vielleicht jemand einen Tipp geben, nach was ich da suchen könnte? 

    Danke & viele Grüße
    Eike

    ;;;;;;;;;
    ;;;;;;;;;
    ;;;;;;;;;
    ;;;;;;;;;
    ;;Kundenname ;;;;;;;Seite 2 von 2
    ;;;;;;;;;

    Freitag, 7. April 2017 06:50

Antworten

  • Oh, hab es gefunden. :) 

    Das klappt in einer Schleife:

    if ([string]::IsNullOrEmpty($Array[$i].Titel)) { ... }

    • Als Antwort markiert Eike Wessels Freitag, 7. April 2017 08:01
    Freitag, 7. April 2017 08:01

Alle Antworten

  • Oh, hab es gefunden. :) 

    Das klappt in einer Schleife:

    if ([string]::IsNullOrEmpty($Array[$i].Titel)) { ... }

    • Als Antwort markiert Eike Wessels Freitag, 7. April 2017 08:01
    Freitag, 7. April 2017 08:01
  • Hallo,

    auch wenn du es schon gelöst hast: Man kann hier viel mit regulären Ausdrücken machen. So würde

    $Array | where{$_ -notmatch "^;+$"}

    alle Zeilen herausfiltern, die von Anfang (^) bis Ende ($) nur aus beliebig vielen Semikolon bestehen. 

    Wenn die erste Spalte leer ist, stünde dort immer am Anfang ein Semikolon. Dafür wäre es einfach

    $Array | where{$_ -notmatch "^;"}

    um diese herauszufiltern.

    Viele Grüße

    Christoph

    Freitag, 7. April 2017 08:09