Ich habe eine zweispaltige CSV mit einem Namen und einer Nummer. Der Name einiger Personen verwendet beispielsweise Kommas. Joe Blow, CFA.
Dieses Komma unterbricht das CSV-Format, da es als neue Spalte interpretiert wird.
Ich habe nachgelesen und das häufigste Rezept scheint darin zu bestehen, dieses Zeichen oder das Trennzeichen durch einen neuen Wert (z this|that|the, other
. B. ) zu ersetzen .
Ich möchte das Komma-Trennzeichen wirklich beibehalten (ich weiß, dass Excel andere Trennzeichen unterstützt, andere Interpreter jedoch möglicherweise nicht). Ich möchte auch das Komma im Namen behalten, da es Joe Blow| CFA
ziemlich albern aussieht.
Gibt es eine Möglichkeit, Kommas in CSV-Spalten einzufügen, ohne die Formatierung zu unterbrechen, z. B. indem Sie sie maskieren?
Antworten:
Schließen Sie das Feld in Anführungszeichen ein, z
Siehe Wikipedia .
Aktualisiert :
Um ein Anführungszeichen zu codieren, verwenden Sie
"
ein doppeltes Anführungszeichen in einem Feld als""
und das gesamte Feld wird""""
. Wenn Sie also beispielsweise in Excel Folgendes sehen:Die CSV-Datei enthält:
Ein Komma wird einfach in Anführungszeichen gesetzt,
,
wird also","
.Ein Komma und Zitat Bedürfnisse gekapselt und zitiert werden, so
","
wird""","""
.quelle
","
) eingekapselt und Anführungszeichen werden (z. B."""
)Das Problem mit dem CSV-Format ist, dass es nicht eine Spezifikation gibt, sondern mehrere akzeptierte Methoden, bei denen nicht unterschieden werden kann, welche verwendet werden sollen (zum Generieren / Interpretieren). In einem anderen Beitrag habe ich alle Methoden zum Entkommen von Zeichen (in diesem Fall Zeilenumbrüche, aber dieselbe Grundvoraussetzung) besprochen . Grundsätzlich kommt es darauf an, einen CSV-Generierungs- / Escape-Prozess für die beabsichtigten Benutzer zu verwenden und zu hoffen, dass der Rest nichts dagegen hat.
Referenzspezifikationsdokument .
quelle
Wenn Sie das machen möchten, was Sie gesagt haben, können Sie Anführungszeichen verwenden. Etwas wie das
Jetzt können Sie in Ihrer Namensvariablen ein Komma verwenden.
quelle
$whatever = "\"".$name."\"";
Sie müssen diese Werte angeben.
Hier ist eine detailliertere Spezifikation.
quelle
Zusätzlich zu den Punkten in anderen Antworten: Wenn Sie in Excel Anführungszeichen verwenden, sollten Sie die Platzierung Ihrer Leerzeichen beachten. Wenn Sie eine Codezeile wie diese haben:
Excel behandelt das ursprüngliche Anführungszeichen als wörtliches Anführungszeichen, anstatt es als Komma zu verwenden. Ihr Code muss geändert werden zu
Es war diese Subtilität, die mich hierher brachte.
quelle
Ich hatte das gleiche Problem und das Zitieren
,
half nicht. Schließlich ersetzte ich das,
mit+
, beendete die Verarbeitung, speicherte die Ausgabe in einer Outfile und ersetzte das+
mit,
. Das mag hässlich erscheinen, aber es hat bei mir funktioniert.quelle
+
jedoch sicher, dass dies in meinen Daten überhaupt nicht vorhanden ist. Vielen Dank für Ihren freundlichen Kommentar.""
. Dies ist die normale Vorgehensweise.field = field.replace('"', '""')
Schritt 2 - nach Schritt 1 das Feld selbst in doppelte Anführungszeichen einschließen, z. B.field = '"' + field + '"'
- dann sind Sie, glaube ich, eisern gegossen.Abhängig von Ihrer Sprache ist möglicherweise eine to_json-Methode verfügbar. Das wird vielen Dingen entgehen, die CSVs brechen.
quelle
Ich habe festgestellt, dass einige Anwendungen wie Numbers in Mac das doppelte Anführungszeichen ignorieren, wenn davor Platz ist.
a, "b,c"
funktioniert nicht während dera,"b,c"
Arbeit.quelle
Sie können Ihre Werte beispielsweise in PHP base64_encode ($ str) / base64_decode ($ str) codieren.
IMO ist dies einfacher als das Verdoppeln von Anführungszeichen usw.
https://www.php.net/manual/en/function.base64-encode.php
Die codierten Werte enthalten niemals ein Komma, sodass jedes Komma in Ihrer CSV ein Trennzeichen ist.
quelle
Sie können Vorlagenliterale (Vorlagenzeichenfolgen) verwenden.
z.B -
quelle
Sie können das
Text_Qualifier
Feld in Ihrem Flatfile-Verbindungsmanager als verwenden"
. Dies sollte Ihre Daten in Anführungszeichen setzen und nur durch Kommas getrennt werden, die außerhalb der Anführungszeichen stehen.quelle
Wenn der Artikelwert ein doppeltes Anführungszeichen (") hat, ersetzen Sie ihn zunächst durch 2 doppelte Anführungszeichen (" ").
Zum Schluss wickeln Sie den Artikelwert ein:
LINKS: Mit doppeltem Anführungszeichen (")
RECHTS: Mit doppeltem Anführungszeichen (") und Komma (,)
quelle
Doppelte Anführungszeichen haben bei mir nicht funktioniert, bei mir
\"
. Wenn Sie als Beispiel doppelte Anführungszeichen setzen möchten, können Sie festlegen\"\"
.Sie können als Beispiel Formeln erstellen:
wird in csv schreiben:
quelle
Vielleicht nicht das, was hier gebraucht wird, aber es ist eine sehr alte Frage und die Antwort kann anderen helfen. Ein Tipp, den ich beim Importieren in Excel mit einem anderen Trennzeichen nützlich finde, ist das Öffnen der Datei in einem Texteditor und das Hinzufügen einer ersten Zeile wie:
sep = |
wo | ist das Trennzeichen, das Excel verwenden soll. Alternativ können Sie das Standardtrennzeichen in Windows ändern, aber etwas langwierig:
Systemsteuerung> Uhr & Region> Region> Formate> Zusätzliche> Zahlen> Listentrennzeichen [Wechsel vom Komma zu Ihrer bevorzugten Alternative]. Das bedeutet, dass Excel standardmäßig auch CSVs mit dem ausgewählten Trennzeichen exportiert.
quelle