2016-03-22 4 views
0

Ich schreibe einige Werte in CSV-Datei, aber der Wert, der Kommas enthält, wird aufgeteilt in> 1 einmal z. a, b, c ist ein Wert und sollte in 1 Zelle erscheinen, aber es erscheint in 3 Zellen.Komma getrennt für einen Wert beim Schreiben in csv

writer.append(node.getLongName()); 

so schreibe ich Daten in csv-Dateien mit FileWriter. Wenn node.getLongName() einen Wert mit Kommas angibt, wird der Wert entsprechend dem internen Komma aufgeteilt. Kann mir bitte jemand sagen, wie man das macht und Wertverteilungen vermeidet.

+0

diese http://stackoverflow.com/questions/16103224/string-containing-comma-inputting-in-to-the-csv-file Versuchen – RubioRic

+0

normalerweise in diesem Falls Sie ein anderes Trennzeichen für Ihren CSV benötigen. Ich kann nicht sagen, ob Sie eine Bibliothek aus dem von Ihnen geposteten Code verwenden, aber Sie müssen das Trennzeichen ändern. Normalerweise werden doppelte Anführungszeichen verwendet, um eine Zeichenfolge und ein Semikolon zu umbrechen, oder eine Pipe zu separaten Werten, so dass der Text wie folgt aussieht: "a"; "b"; "a, b, c" oder "a" | "b" | "a, b, c" – valepu

+1

Die Angabe des Feldes ist eine gebräuchliche Lösung, aber es ist notwendig, dass Ihr Leser dieses Zitat unterstützt. Wählen Sie dedizierte CSV-Bibliotheken wie http://commons.apache.org/csv/ – davidshen84

Antwort

0

Sie schreiben in eine CSV-Datei, wissen aber aus Ihrer Quelldatei, welche Felder nicht getrennt werden sollen. Wenn Sie das tun, können Sie den Separator für dieses Feld von Komma zu einem anderen Trennzeichen wie '+' ändern und dann mit dem anderen Element der CSV anhängen. Als Beispiel:

10/09/2016, cycling club,(sam+1000+oklahoma),(henry+ 1001+california),(bill+1002+NY) 

Hier in der Klammer Es hat die Details der Studenten. Sie wurden vorher vom Befehl getrennt, aber ich habe es in ein Pluszeichen geändert.

0

Obwohl von Hand für triviale Aufgaben manipuliert werden kann, ist CSV format schwierig, sobald Sie Delimiter oder neue Zeile entkommen müssen.

Wenn Sie nicht selbst die schweren Tests für alle Fälle durchführen möchten, sollten Sie sich auf eine bekannte CSV-Bibliothek wie the one from apache verlassen.

Hier ist es immer noch einfach genug (vorausgesetzt, Sie müssen nur Kommas entkommen), und die allgemeine Verwendung ist, Felder mit Leerzeichen oder Trennzeichen zu zitieren. Das bedeutet nicht schreiben a,b,c aber "a,b,c":

writer.append("\"" + node.getLongName()+ "\""); 
Verwandte Themen