Deutsch

Daten und Tabellen · CSV Reiniger

CSV Escape-Dialekte: Doppelte Anführungszeichen, Backslashes und Datenbankexporte

· Hintergrund

csv Analyse Interoperabilität

Ein CSV-Pfad mit doppelten Anführungszeichen ist erfolgreich, während ein Backslash-Escape wörtlicher Text bleibt
Original-ToolAcre-Vektorillustration

RFC 4180 sagt, dass ein Anführungszeichen verdoppelt werden soll; Mehrere Datenbanktools exportieren stattdessen mit Backslashes. In diesem Beitrag werden die im Umlauf befindlichen Escape-Konventionen erläutert, woher sie jeweils kommen und warum eine Datei, die in einem Dialekt gültig ist, in einem anderen nicht funktioniert.

Ein Datenbankexport, den eine Tabelle mit verirrten Backslashes liest – zwei Escape-Traditionen, die in einer Datei kollidieren

Ein Export kann einen Backslash gefolgt von einem Anführungszeichen enthalten, da sein Erzeuger einer Programmiersprachenkonvention folgt, während ein tabellenkalkulationsorientierter Parser doppelte Anführungszeichen erwartet. Die Übertragung eines Dialekts auf den anderen führt nicht zu einem neutralen Kompromiss. Es ändert die Stelle, an der der Anführungszeichenstatus geöffnet und geschlossen wird, oder lässt Escape-Zeichen in den Daten.

ToolAcre unterstützt eine klare Regel: Felder können in doppelte Anführungszeichen eingeschlossen werden und ein inneres Anführungszeichen wird durch zwei Anführungszeichen dargestellt. Backslash hat keine Escape-Funktion. Es ist sicherer, diesen Vertrag vor dem Laden zu identifizieren, als die Reinigungskraft zu bitten, zu erraten, welche Satzzeichen der Hersteller beabsichtigt hat.

Die RFC-Konvention – in doppelte Anführungszeichen setzen und alle inneren Anführungszeichen verdoppeln, ohne Escape-Zeichen

Für einen Wert wie `She said "hello", then left` umgibt der RFC-Stil CSV das Feld und schreibt die inneren Markierungen zweimal. Das Trennzeichen bleibt im Anführungszeichenzustand und jedes verdoppelte Paar gibt ein wörtliches Anführungszeichen zurück. Bei der Serialisierung wird dieselbe Transformation umgekehrt angewendet.

Felder werden in Anführungszeichen gesetzt, wenn sie das aktuelle Trennzeichen, Anführungszeichen, LF, CR oder umgebende Leerzeichen enthalten oder wenn „Alle Felder zitieren“ ausgewählt ist. Es gibt kein separates Escape-Zeichen. Diese kleine Grammatik wird auf Trennzeichen, eingebettete Datensatzenden und Anführungszeichenpaare getestet.

Die C-Tradition – Anführungszeichen, Zeilenumbrüche und Trennzeichen mit Backslash-Escapezeichen, die von Programmiersprachen und einigen Datenbankladern übernommen wurden

Einige Quellsysteme können Backslash-Konventionen definieren, ToolAcre verfügt jedoch über keinen Schalter dafür. Ein Backslash wird wie jedes normale Zeichen an das aktuelle Feld angehängt. Ein folgendes Anführungszeichen wird dann danach interpretiert, ob sich der Parser im Anführungszeichenzustand befindet und ob er über ein Anführungszeichenpaar verfügt.

Folglich sollte ein Backslash-Export von einem für diesen Dialekt konfigurierten Tool analysiert werden, bevor er in doppelte Anführungszeichen CSV konvertiert wird. Suchen und Ersetzen ist riskant, da wörtliche Backslashes und Escape-Sequenzen ähnlich aussehen können. Die Quellgrammatik muss entscheiden, welche syntaktisch sind.

Backslash-Escape ist ein nicht unterstützter alternativer Dialekt und kein Modus, den ToolAcre lesen kann

Die Arbeitsmappe benennt Datenbankprodukte und Datenrahmenbibliotheken, ihre Standardeinstellungen und konfigurierbaren Modi sind jedoch nicht in diesem Repository dokumentiert. In diesem Artikel wird kein Dialekt einem bestimmten Anbieter zugeordnet. Konsultieren Sie die genaue Exporter- oder Loader-Dokumentation, die vom Workflow verwendet wird.

Erfassen Sie den Befehl und die Optionen, die die Datei erstellt haben. Ein Produkt kann mehrere Modi unterstützen, daher ist sein Name allein kein Dialekt. Die Reproduzierbarkeit ergibt sich aus der Konfiguration sowie einem Beispiel, das Trennzeichen, Anführungszeichen, Zeilenumbrüche und Backslash-Randzeichen enthält.

Bestimmte Datenbank- und Bibliotheksstandardwerte erfordern eine eigene Dokumentation und werden hier nicht beansprucht

Unter diesem Parser bedeutet `"a \"quote\"",b` nicht das, was ein C-Leser erwarten könnte, da die Schrägstriche im Text verbleiben und die Anführungszeichen den Status CSV bestimmen. Umgekehrt wird ein doppeltes Paar in einem Feld mit Anführungszeichen zu einem Anführungszeichen und nicht zu zwei Literalzeichen.

Eine Nichtübereinstimmung kann verschobene Spalten oder eine Warnung vor nicht geschlossenen Anführungszeichen auslösen oder in falsch aussehende Zeichenfolgen ohne Strukturfehler analysiert werden. Sehen Sie sich repräsentative Zeilen in der Vorschau an und vergleichen Sie sie mit dem Produzenten. Syntaktischer Erfolg allein kann nicht bestätigen, dass die Escape-Semantik übereinstimmt.

Nach den ToolAcre-Regeln bleiben Backslashes wörtlich und doppelte Anführungszeichen sind die einzigen Anführungszeichen-Escapezeichen

Schreiben Sie eine Zelle, die sowohl ein Komma als auch ein Anführungszeichen enthält, als RFC CSV: `"She said ""hi"", then left"`. ToolAcre gibt den genauen Wert `She said "hi", then left` zurück. Schreiben Sie das innere Anführungszeichen stattdessen mit Backslashes und beachten Sie, dass der Schrägstrich keinen besonderen Schutz hat.

Der Vergleich zeigt Parserregeln, ohne von einer Datenbankmarke abhängig zu sein. Nach einer korrekten Analyse werden beim Herunterladen durchweg doppelte Anführungszeichen erzeugt. Nach einer nicht übereinstimmenden Analyse werden beim Exportieren lediglich die falschen Zellen standardisiert. Lösen Sie daher den Quelldialekt auf, bevor Sie dem Ergebnis vertrauen.

Was dies nicht abdeckt – binäre Exporte, Dateien mit fester Breite und vollständig benutzerdefinierte Escape-Zeichen

Binäre Exporte, Datensätze mit fester Breite und benutzerdefinierte Escape-Zeichen liegen außerhalb der Route. Ein nicht geschlossenes Angebot wird gemeldet und verbraucht die verbleibende Eingabe als ein Feld; Der Reiniger schließt nicht ab, wo ein fehlender Abschluss hingehört. Diese Unklarheit kann nicht allgemein behoben werden.

Die Schnittstelle konvertiert einen Backslash-Dialekt auch nicht automatisch. Verwenden Sie einen Parser, der das Escape-Zeichen explizit benennt, erhalten Sie eine Tabelle mit überprüften Zeichenfolgen und serialisieren Sie dann gemäß der Zielkonvention. Jede Grammatik sollte einmal an einer bekannten Grenze angewendet werden.

Kennen Sie den Dialekt auf beiden Seiten – wie die Zitatreparatur des ToolAcre CSV Cleaner Felder in Richtung konsistenter Zitate normalisiert, die Standardparser lesen

Kennen Sie beide Endpunkte. ToolAcre ist geeignet, wenn die Quelle auf doppelte Anführungszeichen CSV folgt oder wenn ein anderer Parser bereits einen anderen Dialekt in verifizierte Zellen normalisiert hat. Die Ausgabe bietet konsistente Anführungszeichen für minimale oder alle Felder und verdoppelt jedes eingebettete Anführungszeichen.

Verwechseln Sie einen bereinigten Download nicht mit der Dialekterkennung. Der automatische Detektor wählt Trennzeichen, keine Escape-Grammatiken. Eine zuverlässige Übertragung erfasst Trennzeichen, Anführungszeichenregel, Zeilenumbruchrichtlinie und Codierung zusammen und testet dann eine gegnerische Stichprobe, bevor Produktionsdaten verschoben werden.