CSV Parser

Syntax

	$input.parseCSV()

Beschreibung

Interpretiert die Eingabe als CSV formattierten Text.

​Parameter

Name Typ Beschreibung Pflicht Default
input Binärwert Text im CSV-Format ja -
parsers Map Map mit Spaltenname als Schlüssel und (TLScript) Funktion als Wert. Die Wert in der jeweiligen Zellen werden gemäß der angegebenen Funktion aufbereitet. Nein null
columnSeparator Char Trennzeichen für Spaltenwerte Nein ';'
lineSeparator String Trennzeichen für die einzelne Zeilen Nein "\n"
quoteChar Char

Zeichen, das zum Qouten von Werten verwendet wird, die Trennzeichen oder Zeilenumbrüche enthalten. Mit \ (z.B. \") wird das Quoting-Zeichen zu einem normalen Zeichen.

Nein '"'
trimSpaces Boolean Ob Leerzeichen zu Beginn bzw. Ende von Werten ignoriert werden sollen. Nein false
raw Boolean

Ob die Funktion die Rohdaten als Liste von Listen zurück lieferen soll. Ansonsten liefert die Funktion eine Liste von Maps, wobei die Spaltennamen (aus dem Header) als Key verwendet werden.

Nein false/null

Rückgabewert

Typ: Liste

Erzeugt pro Zeile in der Eingabe eine Liste/Map und fasst anschließend diese Listen in einer Liste zusammen.

Beispiele

Beispiel 1:

{
    toParse = binary(
        name: "test.csv",
        data: "date; name; number
        15.07.2024; test; 5
        16.07.2024; test2; 2; etc.
        17.07.2024",
        contentType: "text/csv",
        encoding: "utf-8"
    );
    result = $toParse.parseCSV();
    $result
}

Ausgabe: [{date=" 15.07.2024", number=" 5", name=" test"}, {date=" 16.07.2024", number=" 2", name=" test2"}, {date=" 17.07.2024", number=, name=}]

Der Aufruf von parseCSV() liefert eine Liste von Maps. Dabei wird die erste Zeile als Header gewählt und deren Einträge als Schlüssel für die Maps verwendet. Anschließend wird für jede weitere Zeile aus deren Einträgen gemäß den Schlüsseln des Headers der zugehörigen Map erzeugt, wobei überschüssige Einträge der Zeile ignoriert und fehlenden Einträgen der Zeile mit leeren Strings aufgefüllt werden.

Beispiel 2:

{
    toParse = binary(
        name: "test.csv",
        data: "date; name; number
        15.07.2024; test; 5
        16.07.2024; test2; 2; etc.
        17.07.2024",
        contentType: "text/csv",
        encoding: "utf-8"
    );
    result = $toParse.parseCSV(trimSpaces:true, 
      parsers: {
        "date": x-> dateFormat("dd.MM.yy").format(dateFormat("dd.MM.yyy").parse($x)), 
        "number": y -> numberFormat("#").parse($y)+1 
      });
    $result
}

Ausgabe: [{date=15.07.24, number=6.0, name="test"}, {date=16.07.24, number=3.0, name="test2"}, {date=17.07.24, number=, name=}]

Hier wird beim Aufruf von parseCSV ein Parser für die Spalte mit dem Namen "date" und ein Parser für die Spalte mit dem Namen "number" mit angegeben, welche die Einträge aus dem entsprechenden Zellen aufbereitet.​

Beispiel 3:

{
    toParse = binary(
        name: "test.csv",
        data: "date; name; number
        15.07.2024; test; 5
        16.07.2024; test2; 2; etc.
        17.07.2024",
        contentType: "text/csv",
        encoding: "utf-8"
    );
    result = $toParse.parseCSV(raw:true);
    $result[0]
}

Ausgabe: ["date", "name", "number"]

Der Aufruf von parseCSV(raw:true) liefert die Liste [["date", " name", " number"], [" 15.07.2024", " test", " 5"], [" 16.07.2024", " test2", " 2", " etc."],[" 17.07.2024"]]. Also mit Leerzeichen vor jedem Wert außer dem ersten ("date"). Wenn diese Leerzeichen nicht gewünscht sind, muss manparseCSV(raw:true, trimSpaces:true) aufrufen.