csvkitでcsvとjsonを相互に変換する

昨日ちょっと試したcsvkitをもう少し触ってみる

csvファイルをjson形式に変換する

例えばこんなcsvファイルを

$ head japan_pref_population.csv
pref,people,size,population
愛知県,"7,425,952","5,165.12","1,437.71"
愛媛県,"1,414,996","5,678.33",249.19
茨城県,"2,945,824","6,095.72",483.26
岡山県,"1,936,575","7,113.23",272.25
沖縄県,"1,410,138","2,276.49",619.44
岩手県,"1,303,351","15,278.89",85.3
岐阜県,"2,064,940","10,621.17",194.42
宮崎県,"1,126,132","7,735.99",145.57
宮城県,"2,325,407","7,285.77",319.17

csvjsonでjsonに変換できる

$ head japan_pref_population.csv | csvjson
[{"size": "5,165.12", "population": "1,437.71", "pref": "愛知県", "people": "7,425,952"}, {"size": "5,678.33", "population": "249.19", "pref": "愛媛県", "people": "1,414,996"}, {"size": "6,095.72", "population": "483.26", "pref": "茨城県", "people": "2,945,824"}, {"size": "7,113.23", "population": "272.25", "pref": "岡山県", "people": "1,936,575"}, {"size": "2,276.49", "population": "619.44", "pref": "沖縄県", "people": "1,410,138"}, {"size": "15,278.89", "population": "85.3", "pref": "岩手県", "people": "1,303,351"}, {"size": "10,621.17", "population": "194.42", "pref": "岐阜県", "people": "2,064,940"}, {"size": "7,735.99", "population": "145.57", "pref": "宮崎県", "people": "1,126,132"}, {"size": "7,285.77", "population": "319.17", "pref": "宮城県", "people": "2,325,407"}]

オプションとして-kを指定すると、指定したカラムがキーの連想配列になる

$ head japan_pref_population.csv | csvjson  -k pref
{"宮崎県": {"size": "7,735.99", "population": "145.57", "pref": "宮崎県", "people": "1,126,132"}, "岐阜県": {"size": "10,621.17", "population": "194.42", "pref": "岐阜県", "people": "2,064,940"}, "茨城県": {"size": "6,095.72", "population": "483.26", "pref": "茨城県", "people": "2,945,824"}, "愛媛県": {"size": "5,678.33", "population": "249.19", "pref": "愛媛県", "people": "1,414,996"}, "愛知県": {"size": "5,165.12", "population": "1,437.71", "pref": "愛知県", "people": "7,425,952"}, "宮城県": {"size": "7,285.77", "population": "319.17", "pref": "宮城県", "people": "2,325,407"}, "岡山県": {"size": "7,113.23", "population": "272.25", "pref": "岡山県", "people": "1,936,575"}, "沖縄県": {"size": "2,276.49", "population": "619.44", "pref": "沖縄県", "people": "1,410,138"}, "岩手県": {"size": "15,278.89", "population": "85.3", "pref": "岩手県", "people": "1,303,351"}}

json形式をcsvファイルに変換する

in2csvを使えばjsonファイルをcsvに変換できる
fオプションでフォーマットを指定する

$ head japan_pref_population.csv | csvjson  > pref.json
$ in2csv pref.json -f json | csvcut -c3,1,4,2
pref,people,size,population
愛知県,"7,425,952","5,165.12","1,437.71"
愛媛県,"1,414,996","5,678.33",249.19
茨城県,"2,945,824","6,095.72",483.26
岡山県,"1,936,575","7,113.23",272.25
沖縄県,"1,410,138","2,276.49",619.44
岩手県,"1,303,351","15,278.89",85.3
岐阜県,"2,064,940","10,621.17",194.42
宮崎県,"1,126,132","7,735.99",145.57

csvkit 0.6.2 (beta) ― csvkit 0.6.2 (beta) documentation