630 Stimmen

Gibt es eine Möglichkeit, Kommas in CSV-Spalten einzufügen, ohne die Formatierung zu verändern?

Ich habe eine zweispaltige CSV-Datei mit einem Namen und einer Nummer. Bei einigen Namen werden Kommas verwendet, zum Beispiel Joe Blow, CFA. Dieses Komma bricht das CSV-Format, da es als neue Spalte interpretiert wird.

Ich habe nachgelesen, und das gängigste Rezept scheint zu sein, dieses Zeichen oder das Trennzeichen durch einen neuen Wert zu ersetzen (z. B. this|that|the, other ).

Ich würde gerne das Komma als Trennzeichen beibehalten (ich weiß, dass Excel andere Trennzeichen unterstützt, aber andere Interpreter möglicherweise nicht). Ich würde auch gerne das Komma im Namen beibehalten, da Joe Blow| CFA sieht ziemlich albern aus.

Gibt es eine Möglichkeit, Kommas in CSV-Spalten einzufügen, ohne die Formatierung zu unterbrechen, z. B. indem man sie umbricht?

12voto

hlongmore Punkte 1317

Zusätzlich zu den Punkten in anderen Antworten: Eine Sache, die Sie beachten sollten, wenn Sie Anführungszeichen in Excel verwenden, ist die Platzierung der Leerzeichen. Wenn Sie eine Codezeile wie diese haben:

print '%s, "%s", "%s", "%s"' % (value_1, value_2, value_3, value_4)

Excel behandelt das anfängliche Anführungszeichen als wörtliches Anführungszeichen und verwendet es nicht, um Kommas zu umgehen. Ihr Code muss geändert werden in

print '%s,"%s","%s","%s"' % (value_1, value_2, value_3, value_4)

Es war diese Raffinesse, die mich hierher brachte.

11voto

Mohammed Ahmed Punkte 96

CSV-Dateien können mit verschiedenen Begrenzungszeichen formatiert werden, das Komma ist nur die Standardeinstellung.

Sie können die sep Flag, um das gewünschte Trennzeichen für Ihre CSV-Datei anzugeben.

Fügen Sie einfach die Zeile sep=; als allererste Zeile in Ihrer CSV-Datei, d. h. wenn Sie als Trennzeichen ein Semikolon verwenden möchten. Sie können es in ein beliebiges anderes Zeichen ändern.

Example

8voto

Krishna Punkte 4228

Sie können Vorlagenliterale (Vorlagenstrings) verwenden

z.B..

`"${item}"`

6voto

RasTheDestroyer Punkte 1662

Dies ist keine perfekte Lösung, aber Sie können einfach alle Kommas durch oder ein niedrigeres Angebot. Es sieht einem Komma sehr ähnlich und erfüllt visuell den gleichen Zweck. Anführungszeichen sind nicht erforderlich

in JS wäre dies

stringVal.replaceAll(',', '‚')

In Fällen, in denen Sie diese Daten direkt vergleichen müssen, müssen Sie jedoch besonders vorsichtig sein

4voto

amiksch Punkte 72

Je nach Sprache ist möglicherweise eine to_json-Methode verfügbar. Damit lassen sich viele Dinge umgehen, die CSV-Dateien beschädigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X