2008/10/14

groovyでどう書く.org

タブ区切りデータの処理 どう書く?orgの問題を解いてみた。
def text = new File("test.csv").text

def lines = text.split("\n")

def titles = lines[0].split("\t")
def records = lines[1..-1].collect{
 it.split("\t")
}

// 第1カラムの値でデータを昇順にソートする。
records.sort{ it[0] }

// 第2カラムと第3カラムをヘッダを含めて入れ替える。
def change( row ){
 def tmp = row[2]
 row[2] = row[1]
 row[1] = tmp
}
change(titles)
records.each{
 change(it) 
}

// 第4カラムの値にそれぞれ1を加える。
records.each{ r ->
 r[3] = (r[3].toInteger() + 1).toString()
}

([titles] + records).each{
 println it.join("\t")
}
ちょっと汚い気が。

0 件のコメント:

コメントを投稿