537 Stimmen

Umgang mit Kommas in einer CSV-Datei

Ich bin auf der Suche nach Vorschlägen, wie eine CSV-Datei zu behandeln ist, die von unseren Kunden erstellt und dann hochgeladen wird und die möglicherweise ein Komma in einem Wert enthält, z. B. einen Firmennamen.

Einige der Ideen, die wir in Betracht ziehen, sind: Bezeichner in Anführungszeichen (Wert "," Werte ", "usw.) oder die Verwendung eines | anstelle eines Kommas. Das größte Problem ist, dass wir es einfach machen müssen, sonst wird der Kunde es nicht tun.

0voto

Piotr Czapla Punkte 24266

Da es hier um allgemeine Praktiken geht, wollen wir mit Faustregeln beginnen:

  1. Verwenden Sie nicht CSV, sondern XML mit einer Bibliothek zum Lesen und Schreiben der XML-Datei.

  2. Wenn Sie CSV verwenden müssen. Machen Sie es richtig und verwenden Sie eine kostenlose Bibliothek zum Parsen und Speichern der CSV-Dateien.

Um 1) zu rechtfertigen, sind die meisten CSV-Parser nicht kodierungsbewusst. Wenn Sie also nicht mit US-ASCII arbeiten, werden Sie Probleme bekommen. Beispielsweise speichert Excel 2002 die CSV-Datei in lokaler Kodierung, ohne einen Hinweis auf die Kodierung. Der CSV-Standard ist nicht weit verbreitet :(. Andererseits ist der XML-Standard weit verbreitet und kann Kodierungen recht gut handhaben.

Um 2) zu rechtfertigen, gibt es tonnenweise csv-Parser für fast alle Sprachen, so dass es keine Notwendigkeit, das Rad neu zu erfinden, auch wenn die Lösungen sieht ziemlich einfach.

Um nur einige zu nennen:

  • für Python verwenden Sie build in csv Modul

  • für Perl prüfen Sie CPAN und Text::CSV

  • für php die eingebauten Funktionen fgetcsv/fputcsv verwenden

  • für java check SuperCVS Bibliothek

Es ist wirklich nicht nötig, dies von Hand zu implementieren, wenn Sie es nicht auf einem eingebetteten Gerät auswerten wollen.

-2voto

jamesdeath123 Punkte 3817

Ich denke, die einfachste Lösung für dieses Problem ist, den Kunden zu bitten, die CSV-Datei in Excel zu öffnen und dann mit der Tastenkombination Strg + R alle Kommata durch die gewünschte Kennung zu ersetzen. Dies ist für den Kunden sehr einfach und erfordert nur eine Änderung in Ihrem Code, um das von Ihnen gewählte Trennzeichen zu lesen.

-4voto

Pierre Punkte 3764

Verwenden Sie ein Tabulatorzeichen ( \t ), um die Felder zu trennen.

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