Groovyでカンマで区切られたデータ(CSV)を処理する
ライブラリを使用しないで、カンマ区切りのファイルを処理する。
データファイル 201009気温.csv
日,平均気温,最高気温,最低気温 1,27.4,31.6,25.4 2,27.5,30.9,25.1 3,29.1,35.7,25.3 4,28.7,34,26.1 5,27.9,31.2,25.2 6,29.3,36.7,25.8 7,29.2,34.9,26.5 8,25.3,28.3,23.2 9,24.4,27.2,22.8 10,24.1,28,20.8 11,27.7,33,23.1 12,27.9,32.2,24.7 13,29.5,33.9,25.7 14,25.1,28.8,21.6 15,22.3,25.5,20.2 16,20.9,22.9,19.4 17,22.7,27,19.6 18,24.2,27.7,21.3 19,24.5,28.4,21.3 20,24.8,29.1,22.2 21,25.5,29.8,22.4 22,28.3,33.4,23.8 23,21.2,27.5,16.7 24,18.5,19.9,16.7 25,19.9,23.6,17.6 26,18.9,23,16.7 27,18,19.2,16.7 28,19.7,24,17.3 29,21.7,25.3,20.1 30,19.4,21.6,17.9
ソース
f = new File(".\\testdata\\201009気温.csv") def monthlyList = [] f.splitEachLine(","){ data -> println "データ:"+ data monthlyList.add(data) } println "----------" println monthlyList println "----------" f2 = new File(".\\testdata\\201009気温_save.csv") f2.write("") monthlyList[1..-1].each{data -> line = data[0]+ "日,平均気温:" + data[1] + ",最高気温:" + data[2] + ",最低気温:" + data[3] println line f2.append(line + "\n") }
結果
[D:\workspace\groovy_SandBox]groovy Q077_カンマで区切られたデータ_CSV_を処理する.groovy データ:[日, 平均気温, 最高気温, 最低気温] データ:[1, 27.4, 31.6, 25.4] データ:[2, 27.5, 30.9, 25.1] データ:[3, 29.1, 35.7, 25.3] データ:[4, 28.7, 34, 26.1] データ:[5, 27.9, 31.2, 25.2] データ:[6, 29.3, 36.7, 25.8] データ:[7, 29.2, 34.9, 26.5] データ:[8, 25.3, 28.3, 23.2] データ:[9, 24.4, 27.2, 22.8] データ:[10, 24.1, 28, 20.8] データ:[11, 27.7, 33, 23.1] データ:[12, 27.9, 32.2, 24.7] データ:[13, 29.5, 33.9, 25.7] データ:[14, 25.1, 28.8, 21.6] データ:[15, 22.3, 25.5, 20.2] データ:[16, 20.9, 22.9, 19.4] データ:[17, 22.7, 27, 19.6] データ:[18, 24.2, 27.7, 21.3] データ:[19, 24.5, 28.4, 21.3] データ:[20, 24.8, 29.1, 22.2] データ:[21, 25.5, 29.8, 22.4] データ:[22, 28.3, 33.4, 23.8] データ:[23, 21.2, 27.5, 16.7] データ:[24, 18.5, 19.9, 16.7] データ:[25, 19.9, 23.6, 17.6] データ:[26, 18.9, 23, 16.7] データ:[27, 18, 19.2, 16.7] データ:[28, 19.7, 24, 17.3] データ:[29, 21.7, 25.3, 20.1] データ:[30, 19.4, 21.6, 17.9] ---------- [[日, 平均気温, 最高気温, 最低気温], [1, 27.4, 31.6, 25.4], [2, 27.5, 30.9, 25.1], [3, 29.1, 35.7, 25.3], [4, 28.7, 34, 26.1], [5, 27.9, 31.2, 25.2], [6, 29.3, 36.7, 25.8], [7, 29.2, 34.9, 26.5], [8, 25.3, 28.3, 23.2], [9, 24.4, 27.2, 22.8], [10, 24.1, 28, 20.8], [11, 27.7, 33, 23.1], [12, 27.9, 32.2, 24.7], [13, 29.5, 33.9, 25.7], [14, 25.1, 28.8, 21.6], [15, 22.3, 25.5, 20.2], [16, 20.9, 22.9, 19.4], [17, 22.7, 27, 19.6], [18, 24.2, 27.7, 21.3], [19, 24.5, 28.4, 21.3], [20, 24.8, 29.1, 22.2], [21, 25.5, 29.8, 22.4], [22, 28.3, 33.4, 23.8], [23, 21.2, 27.5, 16.7], [24, 18.5, 19.9, 16.7], [25, 19.9, 23.6, 17.6], [26, 18.9, 23, 16.7], [27, 18, 19.2, 16.7], [28, 19.7, 24, 17.3], [29, 21.7, 25.3, 20.1], [30, 19.4, 21.6, 17.9]] ---------- 1日,平均気温:27.4,最高気温:31.6,最低気温:25.4 2日,平均気温:27.5,最高気温:30.9,最低気温:25.1 3日,平均気温:29.1,最高気温:35.7,最低気温:25.3 4日,平均気温:28.7,最高気温:34,最低気温:26.1 5日,平均気温:27.9,最高気温:31.2,最低気温:25.2 6日,平均気温:29.3,最高気温:36.7,最低気温:25.8 7日,平均気温:29.2,最高気温:34.9,最低気温:26.5 8日,平均気温:25.3,最高気温:28.3,最低気温:23.2 9日,平均気温:24.4,最高気温:27.2,最低気温:22.8 10日,平均気温:24.1,最高気温:28,最低気温:20.8 11日,平均気温:27.7,最高気温:33,最低気温:23.1 12日,平均気温:27.9,最高気温:32.2,最低気温:24.7 13日,平均気温:29.5,最高気温:33.9,最低気温:25.7 14日,平均気温:25.1,最高気温:28.8,最低気温:21.6 15日,平均気温:22.3,最高気温:25.5,最低気温:20.2 16日,平均気温:20.9,最高気温:22.9,最低気温:19.4 17日,平均気温:22.7,最高気温:27,最低気温:19.6 18日,平均気温:24.2,最高気温:27.7,最低気温:21.3 19日,平均気温:24.5,最高気温:28.4,最低気温:21.3 20日,平均気温:24.8,最高気温:29.1,最低気温:22.2 21日,平均気温:25.5,最高気温:29.8,最低気温:22.4 22日,平均気温:28.3,最高気温:33.4,最低気温:23.8 23日,平均気温:21.2,最高気温:27.5,最低気温:16.7 24日,平均気温:18.5,最高気温:19.9,最低気温:16.7 25日,平均気温:19.9,最高気温:23.6,最低気温:17.6 26日,平均気温:18.9,最高気温:23,最低気温:16.7 27日,平均気温:18,最高気温:19.2,最低気温:16.7 28日,平均気温:19.7,最高気温:24,最低気温:17.3 29日,平均気温:21.7,最高気温:25.3,最低気温:20.1 30日,平均気温:19.4,最高気温:21.6,最低気温:17.9
出力ファイル 201009気温_save.csvファイルの内容
1日,平均気温:27.4,最高気温:31.6,最低気温:25.4 2日,平均気温:27.5,最高気温:30.9,最低気温:25.1 3日,平均気温:29.1,最高気温:35.7,最低気温:25.3 4日,平均気温:28.7,最高気温:34,最低気温:26.1 5日,平均気温:27.9,最高気温:31.2,最低気温:25.2 6日,平均気温:29.3,最高気温:36.7,最低気温:25.8 7日,平均気温:29.2,最高気温:34.9,最低気温:26.5 8日,平均気温:25.3,最高気温:28.3,最低気温:23.2 9日,平均気温:24.4,最高気温:27.2,最低気温:22.8 10日,平均気温:24.1,最高気温:28,最低気温:20.8 11日,平均気温:27.7,最高気温:33,最低気温:23.1 12日,平均気温:27.9,最高気温:32.2,最低気温:24.7 13日,平均気温:29.5,最高気温:33.9,最低気温:25.7 14日,平均気温:25.1,最高気温:28.8,最低気温:21.6 15日,平均気温:22.3,最高気温:25.5,最低気温:20.2 16日,平均気温:20.9,最高気温:22.9,最低気温:19.4 17日,平均気温:22.7,最高気温:27,最低気温:19.6 18日,平均気温:24.2,最高気温:27.7,最低気温:21.3 19日,平均気温:24.5,最高気温:28.4,最低気温:21.3 20日,平均気温:24.8,最高気温:29.1,最低気温:22.2 21日,平均気温:25.5,最高気温:29.8,最低気温:22.4 22日,平均気温:28.3,最高気温:33.4,最低気温:23.8 23日,平均気温:21.2,最高気温:27.5,最低気温:16.7 24日,平均気温:18.5,最高気温:19.9,最低気温:16.7 25日,平均気温:19.9,最高気温:23.6,最低気温:17.6 26日,平均気温:18.9,最高気温:23,最低気温:16.7 27日,平均気温:18,最高気温:19.2,最低気温:16.7 28日,平均気温:19.7,最高気温:24,最低気温:17.3 29日,平均気温:21.7,最高気温:25.3,最低気温:20.1 30日,平均気温:19.4,最高気温:21.6,最低気温:17.9
実行環境
- OS:Windows XP
- Groovy Version: 1.6.5
- JVM: 1.6.0_12
Groovyカンマで区切られたデータ(CSV)を処理する
Groovyで文字列を単語に分ける.groovy
Groovyでファイルを行単位で処理する
Groovyでファイルを開く
Groovyでグラフを作成する 4)日付表示を“日-月”から“月/日”に変更する 設定方法のバリエーション編
Groovyでグラフを作成する 4)日付表示を“日-月”から“月/日”に変更する リベンジ編
Groovyでグラフを作成する 4)日付表示を“日-月”から“月/日”に変更する 失敗編
Groovyでグラフを作成する 3)日本語は使えるか?
Groovyでグラフを作成する 2)動作確認編
Groovyでグラフを作成する 1)インストール編
Groovyの詳細についてはJavadocと以下の書籍を参考にしている。
Groovyイン・アクション
posted with amazlet
問題自体は以下の書籍のもの。rubyと似てる部分も多いので、ヒントにもなる。
写経でもいいが自分で考えるために他言語の例をGroovyで置き換えてる。
Rubyレシピブック 第2版 268の技
posted with amazlet
Groovyイン・アクションを読むならあった方が便利かな。