プログラミング

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

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

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

  2. ChatGPT

    ChatGPTとVSCodeの連携方法とその使用例:開発効率を飛躍的にアップさせる

    こんにちは、石原と申します。今回のブログが初投稿となります。…

  3. Google Cloud Platform

    Node.js+GAE: 日本語自然文を形態素解析してネガポジ判定をする

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

  4. Adobe Analytics

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

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

  5. Google Apps Script(GAS)

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

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

  6. Google Analytics

    Cloud FunctionsとOpenWeather APIを使ってGoogle Analytic…

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

最近の記事

  1. LangChainのソースコードから実装を見てみる(Chat…
  2. Tableau×Teams連携
  3. AIを使ったマーケティングゲームを作ってみた
  4. Snowflakeや最新データ基盤が広義のマーケティングにも…
  5. 回帰分析はかく語りき Part3 ロジスティック回帰
  1. ブログ

    レポートビルダーについて
  2. Ad Hoc Analysis

    Adobe Analytics: Ad Hoc Analysisでセグメントの条…
  3. YOTTAA

    YOTTAA:ECサイトで見るべき8つのサイトパフォーマンス指標について
  4. Google Analytics

    【UAとは違う!?】GA4で変更された”イベント”につい…
  5. IT用語集

    HDD、SSDって何?
PAGE TOP