Meine CSV-Daten sehen folgendermaßen aus:
Überschrift1, Überschrift2, Überschrift3, Überschrift4, Überschrift5, Wert1_1, Wert2_1, Wert3_1, Wert4_1, Wert5_1, Wert1_2, Wert2_2, Wert3_2, Wert4_2, Wert5_2 ....
Wie liest man diese Daten und konvertiert sie mit Javascript in ein Array wie dieses?:
[Überschrift1: Wert1_1, Überschrift2: Wert2_1, Überschrift3: Wert3_1, Überschrift4: Wert4_1, Überschrift5: Wert5_1], [Überschrift1: Wert1_2, Überschrift2: Wert2_2, Überschrift3: Wert3_2, Überschrift4: Wert4_2, Überschrift5: Wert5_2] ....
Ich habe diesen Code ausprobiert, aber kein Glück!:
<script type="text/javascript">
var allText =[];
var allTextLines = [];
var Lines = [];
var txtFile = new XMLHttpRequest();
txtFile.open("GET", "file://d:/data.txt", true);
txtFile.onreadystatechange = function()
{
allText = txtFile.responseText;
allTextLines = allText.split(/\r\n|\n/);
};
document.write(allTextLines);<br>
document.write(allText);<br>
document.write(txtFile);<br>
</script>
javascript
jquery
Mahesh Thumar
quelle
quelle
file://...
erlaubt istXMLHttpRequest
.Antworten:
HINWEIS: Ich habe diese Lösung entwickelt, bevor ich an alle "Sonderfälle" erinnert wurde, die in einer gültigen CSV-Datei auftreten können, z. B. maskierte Anführungszeichen. Ich überlasse meine Antwort denen, die etwas schnelles und schmutziges wollen, aber ich empfehle Evans Antwort aus Gründen der Genauigkeit.
Dieser Code funktioniert, wenn Ihre
data.txt
Datei eine lange Folge von durch Kommas getrennten Einträgen ohne Zeilenumbrüche enthält:data.txt:
Javascript:
Der folgende Code funktioniert für eine "echte" CSV-Datei mit Zeilenumbrüchen zwischen den einzelnen Datensätzen:
data.txt:
Javascript:
http://jsfiddle.net/mblase75/dcqxr/
quelle
allText.split(/\r\n|\n/)
aufgeteilt. Wenn alle Ihre Daten tatsächlich eine lange Folge von durch Kommas getrennten Daten ohne Zeilenumbrüche sind, handelt es sich nicht um eine echte CSV-Datei.1, "IETF allows ""quotes"", commas and \nline breaks"
ist beispielsweise zulässig, da die Zeichenfolge von doppelten Anführungszeichen umgeben ist und die doppelten Anführungszeichen maskiert werden.var allTextLines = allText.split("\r");
Danach funktionierte es großartig! Vielen Dank!Sie müssen keine eigenen schreiben ...
Die jQuery-CSV- Bibliothek verfügt über eine Funktion namens
$.csv.toObjects(csv)
, die das Mapping automatisch durchführt.Hinweis: Die Bibliothek ist für die Verarbeitung von CSV-Daten ausgelegt, die RFC 4180- kompatibel sind, einschließlich aller unangenehmen Randfälle, die die meisten "einfachen" Lösungen übersehen.
Wie bereits bei @Blazemonger erwähnt, müssen Sie zuerst Zeilenumbrüche hinzufügen, damit die Daten als CSV gültig sind.
Verwenden des folgenden Datensatzes:
Verwenden Sie den Code:
Die in 'Daten' gespeicherte Ausgabe lautet:
Hinweis: Technisch gesehen ist die Art und Weise, wie Sie die Schlüsselwertzuordnung geschrieben haben, ungültiges JavaScript. Die Objekte, die die Schlüssel-Wert-Paare enthalten, sollten in Klammern gesetzt werden.
Wenn Sie es selbst ausprobieren möchten, empfehlen wir Ihnen, sich die Demonstration der grundlegenden Verwendung auf der Registerkarte 'toObjects ()' anzusehen.
Haftungsausschluss: Ich bin der ursprüngliche Autor von jQuery-CSV.
Aktualisieren:
Bearbeitet, um den Datensatz zu verwenden, den die Operation bereitgestellt hat, und enthält einen Link zur Demo, in der die Daten auf ihre Gültigkeit getestet werden können.
Update2:
Aufgrund der Verschalung von Google Code. jquery-csv ist zu GitHub gewechselt
quelle
csv
ist eine CSV-Zeichenfolge. Lesen Sie die CSV-Datei als Text, um die CSV-Zeichenfolge abzurufen.Nicht durch Kommas teilen - es funktioniert nicht für die meisten CSV-Dateien, und diese Frage hat viel zu viele Ansichten, als dass die Art der Eingabedaten des Fragestellers für alle gelten könnte. Das Parsen von CSV ist beängstigend, da es keinen wirklich offiziellen Standard gibt und viele abgegrenzte Textschreiber Randfälle nicht berücksichtigen.
Diese Frage ist alt, aber ich glaube, es gibt jetzt eine bessere Lösung, da Papa Parse verfügbar ist. Es ist eine Bibliothek, die ich mit Hilfe von Mitwirkenden geschrieben habe und die CSV-Texte oder -Dateien analysiert. Es ist die einzige mir bekannte JS-Bibliothek, die Dateien mit einer Größe von Gigabyte unterstützt. Es behandelt auch fehlerhafte Eingaben ordnungsgemäß.
1 GB Datei in 1 Minute analysiert:
( Update: Mit Papa Parse 4 dauerte dieselbe Datei in Firefox nur etwa 30 Sekunden. Papa Parse 4 ist jetzt der schnellste bekannte CSV-Parser für den Browser.)
Das Parsen von Text ist sehr einfach:
Das Parsen von Dateien ist ebenfalls einfach:
Das Streamen von Dateien ist ähnlich (hier ein Beispiel zum Streamen einer Remote-Datei):
Wenn Ihre Webseite während des Parsens blockiert, kann Papa Web-Worker verwenden, um Ihre Website reaktiv zu halten.
Papa kann Trennzeichen automatisch erkennen und Werte mit Kopfspalten abgleichen, wenn eine Kopfzeile vorhanden ist. Es kann auch numerische Werte in tatsächliche Zahlentypen umwandeln. Es analysiert Zeilenumbrüche und Anführungszeichen und andere seltsame Situationen angemessen und verarbeitet sogar fehlerhafte Eingaben so robust wie möglich. Ich habe mich von vorhandenen Bibliotheken inspirieren lassen, um Papa zu erstellen, also Requisiten für andere JS-Implementierungen.
quelle
Ich verwende d3.js zum Parsen von CSV-Dateien. Sehr einfach zu bedienen. Hier sind die Dokumente .
Schritte:
Verwenden von Es6;
Weitere Informationen finden Sie in den Dokumenten .
Update - d3-Anfrage ist veraltet. Sie können d3-fetch verwenden
quelle
Sie können PapaParse verwenden, um zu helfen. https://www.papaparse.com/
Hier ist ein CodePen. https://codepen.io/sandro-wiggers/pen/VxrxNJ
quelle
Hier ist eine JavaScript-Funktion, die CSV-Daten analysiert und Kommas in Anführungszeichen berücksichtigt.
Beispiel für die Verwendung der Funktion zum Parsen einer CSV-Datei, die folgendermaßen aussieht:
in Arrays:
So können Sie die Daten in Objekte umwandeln, z. B. den CSV-Parser von D3 (eine solide Lösung von Drittanbietern):
Hier ist eine funktionierende Geige dieses Codes .
Genießen! - Curran
quelle
Hier ist eine andere Möglichkeit, eine externe CSV in Javascript zu lesen (mit jQuery).
Es ist etwas langwieriger, aber ich denke, wenn Sie die Daten in Arrays einlesen, können Sie den Prozess genau verfolgen und die Fehlerbehebung vereinfachen.
Könnte jemand anderem helfen.
Das Beispiel für eine Datendatei:
Und hier ist der Code:
Hoffe das hilft jemandem in der Zukunft!
quelle
)
Zeichen in Zeile 45, also habe ich es hinzugefügt, aber jetzt in Zeile 9 gibt es mir einen Konsolenfehler.Uncaught ReferenceError: $ is not defined at index.html:9
Könnten Sie dabei helfen?Ich möchte, dass der Regex so viel wie möglich macht. Diese Regex behandelt alle Elemente entweder als Anführungszeichen oder als Anführungszeichen, gefolgt von einem Spalten- oder Zeilenbegrenzer. Oder das Ende des Textes.
Aus diesem Grund ist diese letzte Bedingung - ohne sie wäre es eine Endlosschleife, da das Muster mit einem Feld mit der Länge Null übereinstimmen kann (vollständig gültig in CSV). Da $ jedoch eine Behauptung mit der Länge Null ist, wird es nicht zu einer Nichtübereinstimmung übergehen und die Schleife beenden.
Und zu Ihrer Information, ich musste die zweite Alternative dazu bringen, Anführungszeichen auszuschließen, die den Wert umgeben. Es scheint, als ob es vor der ersten Alternative auf meiner Javascript-Engine ausgeführt wurde und die Anführungszeichen als Teil des nicht zitierten Werts betrachtet. Ich werde nicht fragen - habe es gerade zum Laufen gebracht.
quelle
Per die akzeptierte Antwort ,
Ich habe das zum Laufen gebracht, indem ich hier die 1 in eine 0 geändert habe:
gewechselt zu
Die a-Datei mit einer durchgehenden Zeile wird mit einer allTextLines.length von 1 berechnet. Wenn die Schleife also bei 1 beginnt und so lange ausgeführt wird, wie sie kleiner als 1 ist, wird sie nie ausgeführt. Daher das leere Warnfeld.
quelle
Wenn Sie dies ohne Verwendung von Ajax lösen möchten , verwenden Sie die
FileReader()
Web-API .Beispielimplementierung:
.csv
Datei auswählenquelle
quelle