プログラミング

Node.jsでCSVファイル内のダブルクオートで囲まれたカラム内のカンマを除去する

こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。

いろんなデータを扱う業務をしていると、CSVのファイルをやりとりする事があります。
で、そのCSVをプログラムで取り込もうとした時に、数字のカラムがダブルクオートで囲まれていて、そのカラムの中にカンマが入ってて、、というような事に困る事が多々あります。
ExcelでCSVを作るとよくあるパターンです。

そこで「数字はカンマなしの文字列になおして!」なんて差し戻すのもアレなので、Node.jsでササっと不要なカンマを取り除くようにしました。

つまり、仮にこういうCSVがあったとして

#input.csv
123,"456,789","1,234,567"
"1,000",567,"89,123"
4,567,"8,900"

こういうCSVに変換したい、というケースです。

#newinput.csv
123,456789,1234567
1000,567,89123
4,567,8900

まずは、Node.jsのnode-csvというパッケージを使います。まずはnpmでインストールします。

$ npm install csv --save

次にソースコードです。

/*
* main.js
* usage: node main.js input.csv
*/

var file = process.argv[2]; //引数で入力ファイル名を指定
var csv = require('csv');
var fs = require('fs');

var ws = fs.createWriteStream('new' + process.argv[2]); //出力ファイル名は new+元ファイル名

var parser = csv.parse({trim:true}, function(err, data) {

    for (var i=0; i<data.length; i++) {
        var outdata = "";
        for (var j=0; j<data[i].length; j++) {
        
            outdata = outdata + data[i][j].replace(/,/g, "");
            if ((j + 1) == data[i].length) {
                outdata = outdata + "\n";
            } else {
                outdata = outdata + ",";
            }
        }
        ws.write(outdata);
    }
}).on('end', () => {
  ws.end();
});

fs.createReadStream(file).pipe(parser);

使い方は

$ node main.js input.csv

というように、引数で入力ファイル名を指定します。

これを応用すれば、CSV内に含まれる不要な文字列を除去できます。
ちょこっと役に立つプログラムです。

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Linux

    無料のWindows10仮想マシンをEdge/IE11検証用途で使う

    こんにちは、エクスチュアの権泳東(コン・ヨンドン)です。普段W…

  2. Adobe Analytics

    AA + GA : SafariのITP2.1に備えてphpでクッキーを永続化する

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  3. Amazon Web Services

    Databricks Community Editionを使ってApache Sparkを無料で学ぶ…

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  4. Adobe Analytics

    Adobe Analytics: SegmentsAPIを使って大量のセグメント設定を作成・更新する…

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  5. Google Apps Script(GAS)

    【Google App Script】GASを利用してslackに投稿するbotを作る

    こんにちは、エクスチュアの岩川です。業務でSlackを使用さ…

  6. Adobe Analytics

    Adobe AEP SDK: リバースプロキシを使ったアプリ計測検証方法

    こんにちは、エクスチュアの權泳東(コン・ヨンドン)です。Ado…

最近の記事

  1. AIを使ったマーケティングゲームを作ってみた
  2. Snowflakeや最新データ基盤が広義のマーケティングにも…
  3. 回帰分析はかく語りき Part3 ロジスティック回帰
  4. GCSへのSnowflake Open Catalogによる…
  5. VPC Service Controlsで「NO_MATCH…
  1. Tableau

    Tableau Tips〜INDEX関数〜
  2. IT用語集

    ユーザビリティ(Usability)って何?
  3. IT用語集

    プロパティ(Property)って何?
  4. Adobe Analytics

    Adobe Analytics: データフィードをBigQueryで集計する
  5. Adobe Analytics

    はじめてのAdobe Analytics実装②
PAGE TOP