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?

832voto

Ryan Punkte 24754

Schließen Sie das Feld in Anführungszeichen ein, z. B.

field1_value,field2_value,"field 3,value",field4, etc...

Véase wikipedia .

Aktualisiert :

Um ein Zitat zu kodieren, verwenden Sie " wird ein Anführungszeichen in einem Feld kodiert als "" und das gesamte Feld wird zu """" . Wenn Sie also z. B. in Excel Folgendes sehen:

---------------------------------------
| regular_value |,,,"|  ,"", |"""   |"|
---------------------------------------

die CSV-Datei enthalten wird:

regular_value,",,,""",","""",","""""""",""""

Ein Komma wird einfach durch Anführungszeichen eingekapselt, also , になる "," .

Ein Komma und ein Anführungszeichen müssen gekapselt und in Anführungszeichen gesetzt werden, also "," になる """,""" .

74voto

mudin Punkte 2492

Ich habe festgestellt, dass einige Anwendungen wie Numbers auf dem Mac das doppelte Anführungszeichen ignorieren, wenn ein Leerzeichen davor steht.

a, "b,c" nicht funktioniert, während a,"b,c" funktioniert.

40voto

Rudu Punkte 15306

Das Problem mit dem CSV-Format ist, dass es nicht nur eine Spezifikation gibt, sondern mehrere akzeptierte Methoden, ohne dass man unterscheiden kann, welche davon verwendet werden soll (für die Generierung/Interpretation). Ich habe alle Methoden zur Vermeidung von Zeichen (in diesem Fall Zeilenumbrüche, aber dieselbe Grundvoraussetzung) in weiterer Beitrag . Im Grunde läuft es darauf hinaus, ein CSV-Erzeugungs-/Escaping-Verfahren für die vorgesehenen Benutzer zu verwenden und zu hoffen, dass der Rest nichts dagegen hat.

Referenz-Spezifikationsdokument .

23voto

Cloud Punkte 944

Wenn Sie sagen wollen, dass Sie gesagt haben, können Sie Anführungszeichen verwenden. Etwas wie dies

$name = "Joe Blow, CFA.";
$arr[] = "\"".$name."\"";

Jetzt können Sie also ein Komma in Ihrer Namensvariablen verwenden.

14voto

SLaks Punkte 832502

Sie müssen diese Werte angeben.
Hier ist eine ausführlichere Spezifikation.

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