simplecsv
Version:
Fast and compact CSV parser for parsing CSV with CSV to JSON support.
138 lines (95 loc) • 10.8 kB
HTML
<p><a href="/"><img src="https://camo.githubusercontent.com/1a21824f38b910bb79319529d0dd1fbf8bff162d/687474703a2f2f73696d706c656373766a732e636f6d2f73696d706c656373762e706e67" alt="SimpleCSV.js Logo" data-canonical-src="http://simplecsvjs.com/simplecsv.png" style="max-width:100%;"></a></p>
<p>SimpleCSV.js is a fast and compact JavaScript CSV library for parsing csv strings, and parsing JSON table objects.</p>
<h2>
<a id="user-content-features" class="anchor" href="#features" aria-hidden="true"><span class="octicon octicon-link"></span></a>Features</h2>
<ul>
<li>
<strong>In-the-Browser, For-The-Browser:</strong> Only 3 lines of code to parse CSV strings, and JSON tables.</li>
<li>
<strong>Python csv compatible:</strong> Guaranteed to produce the same results as Python 2.7 csv parser.</li>
<li>
<strong>JSON parser:</strong> Convert CSV to JSON, or JSON to CSV.</li>
<li>
<strong>No dependancies:</strong> Tiny standalone .js file.</li>
</ul>
<h2>
<a id="user-content-downloads" class="anchor" href="#downloads" aria-hidden="true"><span class="octicon octicon-link"></span></a>Downloads</h2>
<ul>
<li><a href="http://simplecsvjs.com/dist/simplecsv.0.0.46.standalone.min.js">Version 0.0.46, minimized, 4.4K : http://simplecsvjs.com/dist/simplecsv.0.0.46.standalone.min.js</a></li>
<li><a href="http://simplecsvjs.com/dist/simplecsv.0.0.46.standalone.js">Version 0.0.46, un-minimized, 13K : http://simplecsvjs.com/dist/simplecsv.0.0.46.standalone.js</a></li>
</ul>
<h2>
<a id="user-content-examples" class="anchor" href="#examples" aria-hidden="true"><span class="octicon octicon-link"></span></a>Examples</h2>
<h3>
<a id="user-content-browser" class="anchor" href="#browser" aria-hidden="true"><span class="octicon octicon-link"></span></a>Browser</h3>
<p>In any web page:</p>
<div class="highlight highlight-html"><pre><<span class="pl-ent">script</span> <span class="pl-e">src</span>=<span class="pl-s"><span class="pl-pds">"</span>http://simplecsvjs.com/dist/simplecsv.0.0.46.standalone.min.js<span class="pl-pds">"</span></span>></<span class="pl-ent">script</span>>
<span class="pl-s1"><<span class="pl-ent">script</span>></span>
<span class="pl-s1"> <span class="pl-k">var</span> simplecsv <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>simplecsv<span class="pl-pds">'</span></span>);</span>
<span class="pl-s1"> <span class="pl-k">var</span> csv <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">simplecsv.csv</span>();</span>
<span class="pl-s1"></span>
<span class="pl-s1"> <span class="pl-k">var</span> parsedCsvdata <span class="pl-k">=</span> csv.parseString(<span class="pl-s"><span class="pl-pds">'</span>Turing, 35, chess<span class="pl-cce">\n</span>Samuel, 21, checkers<span class="pl-pds">'</span></span>);</span>
<span class="pl-s1"></<span class="pl-ent">script</span>></span></pre></div>
<h3>
<a id="user-content-nodejs" class="anchor" href="#nodejs" aria-hidden="true"><span class="octicon octicon-link"></span></a>Node.js</h3>
<div class="highlight highlight-js"><pre><span class="pl-k">var</span> simplecsv <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>simplecsv<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> csv <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">simplecsv.csv</span>();
<span class="pl-k">var</span> parsedCsvdata <span class="pl-k">=</span> csv.parseString(<span class="pl-s"><span class="pl-pds">'</span>Turing, 35, chess<span class="pl-cce">\n</span>Samuel, 21, checkers<span class="pl-pds">'</span></span>);</pre></div>
<h2>
<a id="user-content-more-examples" class="anchor" href="#more-examples" aria-hidden="true"><span class="octicon octicon-link"></span></a>More Examples</h2>
<h3>
<a id="user-content-csv-to-json" class="anchor" href="#csv-to-json" aria-hidden="true"><span class="octicon octicon-link"></span></a>CSV to JSON</h3>
<div class="highlight highlight-js"><pre><span class="pl-k">var</span> simplecsv <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>simplecsv<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> csv <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">simplecsv.csv</span>();
<span class="pl-k">var</span> jsonObj <span class="pl-k">=</span> csv.CSVToJSON(<span class="pl-s"><span class="pl-pds">'</span>Planet Name, Color<span class="pl-cce">\n</span>Mars,red-orange<span class="pl-cce">\n</span>Uranus,light-blue<span class="pl-pds">'</span></span>,
{ hasHeaders<span class="pl-k">:</span> <span class="pl-c1">true</span> });
<span class="pl-en">console</span><span class="pl-c1">.log</span>(jsonObj);</pre></div>
<p>output is:</p>
<div class="highlight highlight-json"><pre>[{<span class="pl-s"><span class="pl-pds">"</span>Planet Name<span class="pl-pds">"</span></span>:<span class="pl-s"><span class="pl-pds">"</span>Mars<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span> Color<span class="pl-pds">"</span></span>:<span class="pl-s"><span class="pl-pds">"</span>red-orange<span class="pl-pds">"</span></span>},{<span class="pl-s"><span class="pl-pds">"</span>Planet Name<span class="pl-pds">"</span></span>:<span class="pl-s"><span class="pl-pds">"</span>Uranus<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span> Color<span class="pl-pds">"</span></span>:<span class="pl-s"><span class="pl-pds">"</span>light-blue<span class="pl-pds">"</span></span>}]</pre></div>
<h3>
<a id="user-content-json---csv" class="anchor" href="#json---csv" aria-hidden="true"><span class="octicon octicon-link"></span></a>JSON -> CSV</h3>
<div class="highlight highlight-js"><pre><span class="pl-k">var</span> simplecsv <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>simplecsv<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> csv <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">simplecsv.csv</span>();
<span class="pl-k">var</span> str <span class="pl-k">=</span> csv.JSONToCSV(<span class="pl-s"><span class="pl-pds">'</span>[{"Planet Name":"Mars"," Color":"red-orange"},<span class="pl-pds">'</span></span> <span class="pl-k">+</span>
<span class="pl-s"><span class="pl-pds">'</span>{"Planet Name":"Uranus"," Color":"light-blue"}]<span class="pl-pds">'</span></span>);
<span class="pl-en">console</span><span class="pl-c1">.log</span>(str);</pre></div>
<p>output is:</p>
<pre><code>Planet Name, Color
Mars,red-orange
Uranus,light-blue
</code></pre>
<h3>
<a id="user-content-consolelog-every-cell" class="anchor" href="#consolelog-every-cell" aria-hidden="true"><span class="octicon octicon-link"></span></a>console.log() every cell</h3>
<div class="highlight highlight-js"><pre><span class="pl-k">var</span> simplecsv <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>simplecsv<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> csv <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">simplecsv.csv</span>();
<span class="pl-k">var</span> cdata <span class="pl-k">=</span> csv.parseString(<span class="pl-s"><span class="pl-pds">'</span>Planet Name, Color<span class="pl-cce">\n</span>Mars,red-orange<span class="pl-cce">\n</span>Uranus,light-blue<span class="pl-pds">'</span></span>, { hasHeaders<span class="pl-k">:</span> <span class="pl-c1">true</span> });
<span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> cdata.rowCount; i<span class="pl-k">++</span>) {
<span class="pl-k">for</span> (<span class="pl-k">var</span> j <span class="pl-k">=</span> <span class="pl-c1">0</span>; j <span class="pl-k"><</span> cdata.columnCount; j<span class="pl-k">++</span>) {
<span class="pl-en">console</span><span class="pl-c1">.log</span>(cdata.<span class="pl-c1">rows</span>[i][j]);
}
}</pre></div>
<h3>
<a id="user-content-find-errors" class="anchor" href="#find-errors" aria-hidden="true"><span class="octicon octicon-link"></span></a>find errors</h3>
<div class="highlight highlight-js"><pre><span class="pl-k">var</span> simplecsv <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>simplecsv<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> csv <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">simplecsv.csv</span>();
<span class="pl-k">var</span> cdata <span class="pl-k">=</span> csv.parseString(<span class="pl-s"><span class="pl-pds">'</span>Planet Name, Color<span class="pl-cce">\n</span>Mars<span class="pl-cce">\n</span>red-orange, Uranus,light-blue<span class="pl-pds">'</span></span>, { hasHeaders<span class="pl-k">:</span> <span class="pl-c1">true</span> });
<span class="pl-en">console</span><span class="pl-c1">.log</span>(csv.findErrors(cdata));</pre></div>
<h1>
<a id="user-content-quick-start" class="anchor" href="#quick-start" aria-hidden="true"><span class="octicon octicon-link"></span></a>Quick Start</h1>
<h1>
<a id="user-content-install" class="anchor" href="#install" aria-hidden="true"><span class="octicon octicon-link"></span></a>Install</h1>
<p>Install with <a href="https://www.npmjs.com/">npm</a>.</p>
<pre><code>$ npm install simplecsv
</code></pre>
<h1>
<a id="user-content-newline" class="anchor" href="#newline" aria-hidden="true"><span class="octicon octicon-link"></span></a>Newline</h1>
<p>SimpleCSV.js uses <code>\n</code> and <code>\r\n</code> for newline when parsing. Currently there is no support for Mac's <code>\r</code> for newline (i.e. universal mode in Python csv).</p>
<h1>
<a id="user-content-support" class="anchor" href="#support" aria-hidden="true"><span class="octicon octicon-link"></span></a>Support</h1>
<p>For bug reports, feature requests and general questions, please feel free to email <a href="mailto:baris@onehundredyearsofcode.com">baris@onehundredyearsofcode.com</a>.</p>
<h1>
<a id="user-content-development" class="anchor" href="#development" aria-hidden="true"><span class="octicon octicon-link"></span></a>Development</h1>
<p><a href="/CONTRIBUTING.md">Refer to development notes</a></p>
<h1>
<a id="user-content-documentation" class="anchor" href="#documentation" aria-hidden="true"><span class="octicon octicon-link"></span></a>Documentation</h1>
<p><a href="https://cdn.rawgit.com/byuksel/simplecsv/master/docs/index.html">Library manual</a></p>