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