CSV-Dateien mit Anführungszeichen und Kommazeichen in Feldern

8

Ich habe einen Stapel von CSV-Dateien, die ich analysieren möchte - das Problem ist die Hälfte der Anführungszeichen, die als Anführungszeichen verwendet werden, und Kommas im Hauptfeld. Sie sind nicht wirklich CSV, aber sie haben eine feste Anzahl von Feldern, die identifizierbar sind. Der Dialekt = csv. "Excel" Einstellung funktioniert perfekt auf Dateien mit den zusätzlichen "und, Zeichen innerhalb des Feldes.

Diese Daten sind alt / nicht unterstützt. Ich versuche, etwas Leben hineinzudrängen.

z.B.

%Vor%

Dadurch wird der Dateiparser ausgelöst und der Fehler _csv.Error: newline inside string ausgegeben. Ich habe es auf das Problem hingewiesen, indem ich die Anführungszeichen aus dem zweiten Feld entfernt habe und das Modul csv.reader die Datei OK analysiert.

Einige Felder sind mehrzeilig - ich bin mir nicht sicher, ob das wichtig ist.

Ich habe in den Dialekteinstellungen herumgestöbert, und obwohl ich "skipinitialspace" finde, scheint dies das Problem nicht zu lösen.

Um klar zu sein - das ist nicht gültig "CSV", seine Datenobjekte, die lose einer CSV-Struktur folgen, aber haben, und "Zeichen innerhalb des Feldtests.

Der Lineterminator ist \ x0d \ x0a

Ich habe eine Reihe von Versuchen unternommen, die doublequote und die quoting-Variable im Dialekt-Modul unterschiedlich zu behandeln, aber ich kann diese Syntax nicht korrekt erhalten.

Ich kann nicht sicher sein, dass eine "," oder "- Kombination nur auf Feldgrenzen existiert.

Dieses Problem existiert nur für eines (das letzte) von mehreren Feldern in der Datei, und es gibt mehrere tausend Dateien.

    
Jay Gattuso 10.02.2012, 23:02
quelle

3 Antworten

3

Ich darf noch nicht kommentieren, also poste ich als Antwort ...

Angenommen, Sie verwenden Kommas als Trennzeichen, gibt es Kommata in Ihren Daten? Wenn nicht, dann könnten Sie eine massive Suche durchführen und ersetzen, um alle Anführungszeichen nach dem ersten und vor den letzten Zeichen des Feldes vor der CSV-Verarbeitung zu verdoppeln.

    
Herbie 10.02.2012, 23:29
quelle
11

Haben Sie versucht, csv.QUOTE_NONE über das quoting Schlüsselwort arg zu übergeben? Ohne Code oder Daten zum Testen habe ich keine Möglichkeit zu wissen, ob dies tatsächlich mit Ihren Daten funktioniert, aber es scheint mit dem von Ihnen bereitgestellten Fragment zu funktionieren.

%Vor%     
senderle 10.02.2012 23:08
quelle
2

Ich würde einen Konverter schreiben, der das anfängliche csv analysieren und ein gültiges ausgeben würde. Sie können möglicherweise das ", oder" \ n als Mechanismus zum Bestimmen der Begrenzung verwenden.

    
Joshua 11.02.2012 00:14
quelle

Tags und Links