Node.jsでCSV (RFC4180) をparseするのに苦労した

単純に1行分のレコードを Array<String> に変換してくれればよかっただけなのに、簡単に使えるライブラリになかなか当たらなくて難儀した。これを使えばよかった。

www.npmjs.com

const CSV = require('comma-separated-values');
const fs = require('fs');

const data = fs.readFileSync('test.csv', 'utf8');

const csv = CSV.parse(data, {
    cast: false
});
console.log(csv);

castオプションをfalseにしておかないと、無駄な変換が入ってしまう。

以下、RFC4180が処理できなかったやつ。これらは "" でクォートしてたりしてなかったりする列が混在していると解釈できないようだ。使い方が間違っていただけの可能性もあるが、そもそも高機能である必要がない(例えばヘッダ行をもとにKeyValueに変換してしまう機能なんか要らない)ので、要件が合わなかった。

www.npmjs.com

www.npmjs.com