Was sind die "sep =" - Metadaten, die Sie zu CSVs hinzufügen können?

24

Als ich versuchte herauszufinden, wie man CSVs auf einem spanischen PC (eines Kunden) zum korrekten Öffnen in Excel bringt, fand ich sep=,oben in der Datei viele Antworten mit den Empfehlungen :

Auf den ersten Blick funktioniert dieser Ansatz, aber keine dieser Antworten gibt weitere Informationen darüber, woher diese Metadatenoption stammt. Ich habe versucht zu suchen, was es bedeutet (und habe daher all diese Antworten gefunden), konnte aber keine weiteren Informationen erhalten, insbesondere da die Suche nach Interpunktionszeichen notorisch schwierig ist.

Mein Hauptanliegen ist, ob dies eine Excel-spezifische Funktion ist . Ich vermute es ist aber habe nichts definitives gefunden um es zu bestätigen.

Einige verwandte Fragen sind:

  • Welche Zeichen können in dieser Einstellung verwendet werden?
  • Welche anderen Einstellungen sind verfügbar (z. B. Zeilenabschlusszeichen, Anführungszeichen usw.).
  • Gibt es andere Tools, die diese Funktion offiziell unterstützen?

Ich hoffe, es gibt irgendwo eine Dokumentation, auf die mich jemand hinweisen kann, um all diese Fragen und mehr zu beantworten. Ich konnte es einfach nicht finden.

Einige Klarstellungen:

Das sep=ist kein Parameter für einen Parser. Es soll innerhalb der CSV platziert werden. Beispiel:

sep=|
"LETTER"|"ANIMAL"
"a"|"aardvark"
"b"|"bear"
"c"|"cow"
Burhan Ali
quelle
4
Ja, das ist Excel-spezifisch .
Raystafarian
2
Konnten Sie etwas dazu sagen? Ich bin verblüfft mit der gleichen Frage und muss noch irgendwelche MS-Spezifikationen finden, die diese Funktion beschreiben. Wenn diese Funktion von MS nicht dokumentiert ist, wie zum Teufel ist sie überhaupt rausgekommen?
Toddlermenot
@toddlermenot Leider nicht. Alles, was ich bekomme, sind Leute, die die Behauptungen aufstellen, dass es sich um Excel-spezifisch handelt, ohne diese Behauptung zu stützen, was enttäuschend ist.
Burhan Ali

Antworten:

7

RFC 4180 wird allgemein als Standard für das CSV-Format anerkannt und erwähnt keine solche Funktion.

Das W3C- Modell für tabellarische Daten und Metadaten im Web erwähnt es als eine Funktion, die nicht in ihrem Geltungsbereich liegt:

In vielen "CSV" -Dateien werden Metadaten eingebettet, beispielsweise in Zeilen vor der Kopfzeile des CSV-Dokuments. Diese Spezifikation definiert keine Formate zum Einbetten von Metadaten in CSV-Dateien, abgesehen von den Namen der Spalten in der Kopfzeile.

Obwohl ich keinen direkten Beweis dafür gefunden habe, dass diese Funktion Excel-spezifisch ist, ist dies anscheinend immer noch der Fall, da es anscheinend kein Standardisierungsdokument gibt, das diese Funktion abdeckt.

Stefan Kögl
quelle
Gute Beschaffung. Eine Sache, die ich sagen sollte, ist, dass sep = | Definiert das Trennzeichen für die Verwendung in Excel als Pipe-Zeichen ('|'). Es ist nicht weit verbreitet, aber nicht exklusiv für Excel. Es ist eine Trennrichtlinie. Internationale Versionen von Excel iirc haben unterschiedliche Zeichen, z. B. verwendet die europäische Sprache auf einem Computer, auf dem Excel ausgeführt wird, Semikolons.
var firstName
1
Ich bin mir der Verwendung bewusst (vielleicht war das aus meiner Antwort nicht ganz klar). Ich habe nur darauf hingewiesen, dass Excel diese Funktion anscheinend eingeführt hat, wobei sie auf jeder Art von (öffentlichem) Standard basiert.
Stefan Kögl
0

Beitrag zur Beantwortung einer Ihrer Fragen: "Gibt es andere Tools, die diese Funktion offiziell unterstützen?"

Dies wird von Apple Numbers nicht unterstützt (ich habe Numbers Version 3.6.2 getestet).

Es wird auch nicht von csv2json ( https://www.npmjs.com/package/csv2json ) oder csvtojson ( https://www.npmjs.com/package/csvtojson ) unterstützt.

Kintel
quelle
-1

Der Befehl sep = wird in allen Ländern verwendet, in denen Komma als Dezimaltrennzeichen verwendet wird, wie in Italien. Da beim Export von CSV-Dateien in Excel in diesen Ländern Semikolons anstelle von Kommas verwendet werden, müssen Sie sicherstellen, dass die Datei in den USA oder in anderen Ländern gelesen werden kann

sep =;

oben auf der Datei. Dies ist Excel-spezifisch und wird möglicherweise von anderen Anwendungen ignoriert.

Dario de Judicibus
quelle
-2

Nahezu jedes Tool, das aus CSV-Dateien importiert, erkennt, dass nicht nur Kommas als Trennzeichen verwendet werden können. Tabulatoren sind beispielsweise seit langer Zeit üblich. Ich denke, dies geht sogar auf die Zeit der Lochkarten zurück, in der es ein Zeichen geben muss, das als Ende des Datenfelds erkannt wird - mit Ausnahme von Systemen, die Felder mit fester Breite oder Felder mit vorangestellter Länge verwenden, hat fast jedes System dies nötig seit dem Aufkommen der Computer.

Die 3 wichtigsten Elemente sind ein Feldtrennzeichen, ein Datensatztrennzeichen und ein Datenende-Marker. Csv verwendet standardmäßig Komma, Zeilenvorschub und Dateiende für diese Elemente. Sie können jedoch nahezu jede gültige Eingabe verwenden. Sie benötigen jedoch einen Mechanismus um den speziellen Markierungen zu entgehen, wenn sie in Ihren gültigen Daten vorkommen.

Ein historisches System, auf das ich gestoßen bin, verwendete Newline für das Feldende, 2 Leerzeilen für das Ende der Aufzeichnung und *!*!* END *!*!*für das Ende der Daten. Ich bin allgemein auf alle gestoßen, ,\t|:die als Feldtrennzeichen zusammen mit verschiedenen Steuerzeichen verwendet wurden.

Eine Sache, vor der man aufpassen muss, ist, dass die Franzosen und andere das Komma als Dezimalpunkt verwenden - dies kann jede Menge Spaß und Spiel verursachen. Es gibt einen Standardisierungsgrad für CSV-Dateien in RFC4180, aber manchmal müssen Sie Dateien manuell bearbeiten, wenn Sie aus einem Programm exportieren und in ein anderes importieren.

Um den zweiten Teil Ihrer Frage zu beantworten, enthält Python beispielsweise einen CSV-Reader / Writer als eine der Standardbibliotheken, die die folgenden Optionen bietet:

  • delimiter- Dies ist das Feldtrennzeichen (es sei denn , es ist ein Escapezeichen).
  • doublequote- Wenn true, wird ein " innerhalb eines Feldes als dargestellt""
  • escapechar- Entfernt eine spezielle Bedeutung von einem folgenden Zeichen, z. B. wenn es auf gesetzt ist, \kann das Zitat als dargestellt werden\"
  • lineterminator- in der Regel eines von \n, \r, \r\noder\n\r
  • quotechar- Zeichen, mit dem Zeichenketten in der Regel "oder in Anführungszeichen gesetzt werden'
  • quoting - Flagge als einer von:
    • ALL - Jedes Feld ist in Anführungszeichen, dh: "1","Free Beer","ASAP"
    • MINIMAL - Nur Anführungszeichenfelder mit Sonderzeichen, dh: 1,"Beer, (Free)", Now, Please
    • QUOTE_NONNUMERIC - Zitiere alles, was keine Zahl ist, dh: 1,"Beer, (Free)", "Now", "Please"
    • NONE - Zitieren Sie stattdessen nicht Flucht, dh: 1,Beer\, (Free), Now, Please
  • skipinitialspace- Überspringen Sie alle führenden Leerzeichen der einzelnen Felder, damit Sie sie , nicht nur ,als Feldtrennzeichen verwenden können.

Je flexibler und durchdachter ein Tool ist, das CSV-Dateien importieren kann, desto mehr dieser Optionen (möglicherweise mit unterschiedlichen Namen und / oder Mechanismen) sind verfügbar.

Steve Barnes
quelle
2
Das beantwortet meine Frage nicht. Es erklärt, was CSVs sind, die mir bereits bekannt sind. Meine Frage bezieht sich auf eine bestimmte Syntax. Gibt es einen Hintergrund, den ich meiner Frage hinzufügen könnte, um die Dinge zu klären?
Burhan Ali
1
Danke, aber das hilft immer noch nicht. sep=ist kein Parameter für einen Parser. Ich habe meine Frage etwas präzisiert.
Burhan Ali
1
@SteveBarnes Aber lässt jedes Tool, zum Beispiel die von Ihnen erwähnte Python-Bibliothek, Optionen als Teil des Inhalts der Datei zu? Das ist, denke ich, der Hauptpunkt der Frage.
Randy Orrison
1
"Weil sie eine der vielen herausragenden Kuriositäten sind." Ist es aber Das ist ein Teil dessen, was ich zu trainieren versuche. Ich möchte nicht wissen, was eine CSV ist. Ich möchte nicht wissen, wie man eine CSV analysiert. Ich möchte wissen, was sep=ist und woher es kommt.
Burhan Ali
1
sep = ist eine Microsoft Excel-spezifische Hinweismethode, die in keiner Nicht-Microsoft-Spezifikation behandelt wird, die ich finden kann. Es kommt von einem Teil von Microsoft.
Steve Barnes