バッチ処理で使う多くの場面で、CSVが利用されます。経理処理から機械学習まで、CSVはデータ処理の基本です。そこで、なでしこ3PC版(Node.js)版で、CSVファイルを読む方法をまとめてみます。
まずは結論から
日本で流通する多くのCSVファイルはShift_JIS形式です。そこで、SJISファイル読む
を使って、Shift_JISのファイルを読み込み、CSV取得
でなでしこの配列形式に直して何か処理を行って表CSV変換
でCSVに戻してSJISファイル保存
でファイルに保存します。
CSV処理.nako3
!「plugin_csv」を取り込む。
# CSVファイルを読み込む
「入力_sjis.csv」をSJISファイル読んで、CSV取得して、データに代入。
# 何かしらの処理 - ここでは抽出
データの0から「ケーキ」を表ピックアップして抽出データに代入。
# CSVファイルへ保存
抽出データを表CSV変換して、「出力_sjis.csv」へSJISファイル保存。
それぞれの命令の使い方
上記で使った命令の意味と、マニュアルへのリンクを以下に列挙します。
- SJISファイル読む --- Shift_JISのファイルを読む
- SJISファイル保存 --- Shift_JISでファイルへ書き込む
- CSV取得 --- テキストデータをCSV形式と見なして、二次元配列(表)に変換する
- 表CSV変換 --- 二次元配列(表)をCSV形式のテキストに変換する
CSV処理に関して - CSV取得と反復の組み合わせ
CSVに対して何か処理したい場合、列ごとに処理を行うことになります。例えば、先頭列に顧客の名前が書かれており「様」を付けたい場合などは、以下のように書けるでしょう。
様追加.nako3
CSV=「加藤,300
佐藤,200
田中, 250」
O=CSVをCSV取得
Oを反復
対象[0]=対象[0]&「様」
ここまで。
Oを表CSV変換して表示。
上記を実行すると以下のような結果が得られます。
加藤様,300
佐藤様,200
田中様,250
バリエーション - SJISファイルの読み込みに関して
なお、SJISファイル読む
を使わずに、バイナリ読む
を使ってファイルを読み込み、SJIS取得
でShift_JISの文字列をなでしこの内部形式Unicodeに変換できます。
SJISデータ読む.nako3
「test_sjis.txt」をバイナリ読んで、SJIS取得して、Sに代入。
Sを表示。
まとめ
CSVファイルの読み書きは、バッチ処理の基本の基本なので、しっかり押さえておきましょう!