Quelqu'un a-t-il une idée de l'endroit où je pourrais trouver du code javascript pour analyser les données CSV?
javascript
csv
Pierre-Gilles Levallois
la source
la source
Réponses:
Vous pouvez utiliser la fonction CSVToArray () mentionnée dans cette entrée de blog.
la source
undefined
pour les champs vides qui est cité . Exemple:CSVToArray("4,,6")
me donne[["4","","6"]]
, maisCSVToArray("4,\"\",6")
me donne[["4",undefined,"6"]]
."([^\"\\"
devrait l'être"([^\\"
. Sinon, un guillemet double n'importe où dans une valeur non cotée mettra fin prématurément. J'ai trouvé ça difficile ...jQuery-CSV
Il s'agit d'un plugin jquery conçu pour fonctionner comme une solution de bout en bout pour analyser CSV en données Javascript. Il gère tous les cas de bord présentés dans la RFC 4180 , ainsi que certains qui apparaissent pour les exportations Excel / Google Spreadsheed (c'est-à-dire impliquant principalement des valeurs nulles) pour lesquelles la spécification est manquante.
Exemple:
Mettre à jour:
Oh ouais, je devrais aussi probablement mentionner que c'est complètement configurable.
Mise à jour 2:
Il fonctionne désormais également avec jQuery sur Node.js. Vous avez donc la possibilité d'effectuer une analyse côté client ou côté serveur avec la même bibliothèque.
Mise à jour 3:
Depuis l'arrêt de Google Code, jquery-csv a été migré vers GitHub .
Avertissement: je suis également l'auteur de jQuery-CSV.
la source
csv
dans le code de la solution se référer à la.csv filename
? je suis intéressé par un bon outil JS / JQuery pour analyser un fichier csvJ'ai une implémentation dans le cadre d'un projet de feuille de calcul.
Ce code n'est pas encore testé à fond, mais tout le monde est invité à l'utiliser.
Comme certaines des réponses l'ont cependant noté, votre implémentation peut être beaucoup plus simple si vous avez réellement un fichier DSV ou TSV , car elles interdisent l'utilisation des séparateurs d'enregistrement et de champ dans les valeurs. CSV, d'autre part, peut en fait avoir des virgules et des sauts de ligne à l'intérieur d'un champ, ce qui rompt la plupart des regex et des approches basées sur les divisions.
la source
undefined
cellule. Par exemple,console.log(CSV.parse("first,last,age\r\njohn,doe,"));
console.log(CSV.parse("0,,2,3"));
if ('\r' === chars[c]) { ... }
:if (end === c-1) { row.push(reviver(table.length-1, row.length, '')); }
Voici un analyseur CSV extrêmement simple qui gère les champs entre guillemets avec des virgules, de nouvelles lignes et des guillemets doubles échappés. Il n'y a pas de division ou RegEx. Il scanne la chaîne d'entrée 1-2 caractères à la fois et construit un tableau.
Testez-le sur http://jsfiddle.net/vHKYH/ .
la source
if (cc == '\r' && nc == '\n' && !quote) { ++row; col = 0; ++c; continue; } if (cc == '\n' && !quote) { ++row; col = 0; continue; }
Voici ma grammaire PEG (.js) qui semble fonctionner correctement à RFC 4180 (c'est-à-dire qu'elle gère les exemples à http://en.wikipedia.org/wiki/Comma-separated_values ):
Essayez-le sur http://jsfiddle.net/knvzk/10 ou http://pegjs.majda.cz/online . Téléchargez l'analyseur généré sur https://gist.github.com/3362830 .
la source
csvToArray v1.3
Une fonction compacte (645 octets) mais compatible pour convertir une chaîne CSV en un tableau 2D, conforme à la norme RFC4180.
https://code.google.com/archive/p/csv-to-array/downloads
Utilisation courante: jQuery
Utilisation courante: Javascript
Remplacer le séparateur de champ
Remplacer le séparateur d'enregistrements
Ignorer l'en-tête
Tout remplacer
la source
Je ne sais pas pourquoi je ne pouvais pas ex kirtans. travailler pour moi. Cela semblait échouer sur des champs vides ou peut-être des champs avec des virgules de fin ...
Celui-ci semble gérer les deux.
Je n'ai pas écrit le code de l'analyseur, juste un wrapper autour de la fonction de l'analyseur pour que cela fonctionne pour un fichier. voir Attribution
la source
Des expressions régulières à la rescousse! Ces quelques lignes de code gèrent correctement les champs entre guillemets avec des virgules, des guillemets et des sauts de ligne intégrés basés sur la norme RFC 4180.
Vous n'avez pas besoin d'un générateur d'analyseur tel que lex / yacc. L'expression régulière gère correctement le RFC 4180 grâce à un lookbehind positif, un lookbehind négatif et un lookahead positif.
Clonez / téléchargez le code sur https://github.com/peterthoeny/parse-csv-js
la source
voici mon simple vanille js:
la source
J'ai construit ce script javascript pour analyser un CSV en chaîne vers un objet tableau. Je trouve préférable de décomposer l'ensemble du CSV en lignes, champs et de les traiter en conséquence. Je pense que cela vous permettra de changer facilement le code en fonction de vos besoins.
J'espère que cela vous aidera. Merci.
la source
Pourquoi ne pas simplement utiliser .split (',')?
http://www.w3schools.com/jsref/jsref_split.asp
la source