プログラミング

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. Adobe Analytics

    AdobeAnalyticsでReactNativeアプリを計測する

    この記事は2018年12月7日現在の情報を元にしているのと、レガシーA…

  2. Google Analytics

    Google Analytics: ユニバーサルアナリティクスの拡張Eコマース用dataLayerを…

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

  3. Databricks

    Databricks: Spark RDDで使う主なメソッド

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

  4. Adobe Analytics

    AdobeAnalytics: s.Util.getQueryParam で複数パラメータ同時取得

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

  5. Adobe Analytics

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

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

  6. Adobe Analytics

    Adobe AEP SDKをTypeScriptで開発したReactNativeアプリに実装する

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

最近の記事

  1. 回帰分析はかく語りき Part3 ロジスティック回帰
  2. GCSへのSnowflake Open Catalogによる…
  3. VPC Service Controlsで「NO_MATCH…
  4. モダンデータスタックなワークフローオーケストレーションツール…
  5. Streamlit in Snowflakeによるダッシュボ…
  1. Mouseflow

    mouseflowのプライバシー設定はシンプルで直感的なVisual Priva…
  2. ObservePoint

    ObservePointの価値とは
  3. IT用語集

    インポート(Import)とエクスポート(Export)って何?
  4. Adobe Experience Cloud

    Adobe Summit 2020レポート: 5 Marketing Trend…
  5. IT用語集

    API(Application Programming Interface)って…
PAGE TOP