Czy ktoś ma pomysł, gdzie mogę znaleźć kod javascript do analizy danych CSV?
javascript
csv
Pierre-Gilles Levallois
źródło
źródło
Odpowiedzi:
Możesz użyć funkcji CSVToArray () wspomnianej w tym wpisie na blogu.
źródło
undefined
do pustych pól , które są cytowane . Przykład:CSVToArray("4,,6")
daje mi[["4","","6"]]
, aleCSVToArray("4,\"\",6")
daje mi[["4",undefined,"6"]]
."([^\"\\"
powinien być"([^\\"
. W przeciwnym razie podwójny cytat w dowolnym miejscu w niecytowanej wartości przedwcześnie go zakończy. Znalazłem to najQuery-CSV
Jest to wtyczka jquery zaprojektowana jako kompleksowe rozwiązanie do analizowania CSV w danych Javascript. Obsługuje każdy pojedynczy przypadek krawędzi przedstawiony w RFC 4180 , a także niektóre wyskakujące okienka dla eksportu Excel / Google Spreadsheed (tj. Głównie zawierające wartości zerowe), których brakuje w specyfikacji.
Przykład:
Aktualizacja:
O tak, powinienem również wspomnieć, że jest całkowicie konfigurowalny.
Aktualizacja 2:
Teraz działa również z jQuery na Node.js. Masz więc możliwość parsowania po stronie klienta lub po stronie serwera przy użyciu tej samej biblioteki.
Aktualizacja 3:
Od czasu zamknięcia kodu Google plik jquery-csv został migrowany do GitHub .
Oświadczenie: Jestem także autorem jQuery-CSV.
źródło
csv
w kodzie rozwiązania odnoszą się do.csv filename
? jestem zainteresowany dobrym narzędziem JS / JQuery do parsowania pliku csvMam implementację w ramach projektu arkusza kalkulacyjnego.
Ten kod nie został jeszcze dokładnie przetestowany, ale każdy może go używać.
Jak zauważono w niektórych odpowiedziach, implementacja może być znacznie prostsza, jeśli faktycznie masz plik DSV lub TSV , ponieważ uniemożliwiają one użycie separatora rekordów i pól w wartościach. Z drugiej strony CSV może zawierać przecinki i znaki nowej linii w polu, co łamie większość metod wyrażeń regularnych i podzielonych.
źródło
undefined
komórka. Na przykładconsole.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, '')); }
Oto niezwykle prosty parser CSV, który obsługuje pola cytowane przecinkami, nowe wiersze i znaki cudzysłowu. Nie ma podziału ani RegEx. Skanuje wejściowy ciąg 1-2 znaków na raz i buduje tablicę.
Przetestuj to na stronie http://jsfiddle.net/vHKYH/ .
źródło
if (cc == '\r' && nc == '\n' && !quote) { ++row; col = 0; ++c; continue; } if (cc == '\n' && !quote) { ++row; col = 0; continue; }
Oto moja gramatyka PEG (.js), która wydaje się działać poprawnie na RFC 4180 (tzn. Obsługuje przykłady na http://en.wikipedia.org/wiki/Comma-separated_values ):
Wypróbuj na http://jsfiddle.net/knvzk/10 lub http://pegjs.majda.cz/online . Pobierz wygenerowany analizator składni ze strony https://gist.github.com/3362830 .
źródło
csvToArray v1.3
Kompaktowa (645 bajtów), ale zgodna funkcja do konwersji łańcucha CSV na tablicę 2D, zgodną ze standardem RFC4180.
https://code.google.com/archive/p/csv-to-array/downloads
Wspólne użycie: jQuery
Typowe zastosowanie: JavaScript
Zastąp separator pól
Zastąp separator rekordów
Zastąp pominięcie nagłówka
Zastąp wszystko
źródło
Nie jestem pewien, dlaczego nie mogłem ex Kirtans. pracować dla mnie. Wydawało się, że zawodzi na pustych polach, a może na polach z przecinkami ...
Ten wydaje się obsługiwać oba.
Nie napisałem kodu parsera, tylko opakowanie wokół funkcji parsera, aby działało to dla pliku. patrz Uznanie autorstwa
źródło
Wyrażenia regularne na ratunek! Te kilka wierszy kodu obsługuje poprawnie cytowane pola z osadzonymi przecinkami, cudzysłowami i znakami nowej linii w oparciu o standard RFC 4180.
Nie potrzebujesz generatora analizatora składni, takiego jak lex / yacc. Wyrażenie regularne poprawnie obsługuje RFC 4180 dzięki pozytywnemu wyglądowi, negatywnemu wyglądowi i pozytywnemu spojrzeniu w przód.
Sklonuj / pobierz kod na https://github.com/peterthoeny/parse-csv-js
źródło
Skonstruowałem ten skrypt javascript do analizowania pliku CSV w postaci ciągu na obiekt tablicy. Uważam, że lepiej jest podzielić cały CSV na linie, pola i odpowiednio je przetworzyć. Myślę, że ułatwi ci to zmianę kodu w zależności od potrzeb.
Mam nadzieję, że ci to pomoże. Dzięki.
źródło
Dlaczego nie użyć po prostu .split (',')?
http://www.w3schools.com/jsref/jsref_split.asp
źródło