PythonでCSVのデータをjson形式で出力するスクリプト書いた

最近別のサービス案の構想したり腑抜けてたりして全然進んでなかったしまの時刻表のデータを仕込む作業を再開。

以前の記事の段階で座標データを取得→明らかにおかしかった部分を手動で修正したので、これを元に初期状態の時に表示するマーカーのデータを入れていく。

マーカーのデータは下のような形式のjsonを静的ファイルとして読み込ませているので、要はこのindex_itemsって配列の中にCSVのデータを流し込んでやればOK。

{
  "index_items": [
    {
      //緯度・経度
      "position": {
        "lat": 45.392277,
        "lng": 141.015036
      },
      "title": "礼文島",
      "locale": "礼文町",
      "top_img": null, //ピンをクリックしたときに表示される画像
      "slide_items": null, //画像がある場合、配列でパスを指定
      "timetable": false //時刻表の有無
    },
    //こんな感じのデータが延々並ぶ

てなわけでそれをやったコード。

#coding:utf-8
import csv
import json

items = {
  'index_items': []
}

with open('zahyo.csv', 'r') as f:
  reader = csv.reader(f)
  header = next(reader)

  for row in reader:
    line = ({"position": {"lat": round(float(row[2]), 6), "lng": round(float(row[3]), 6)},"title": row[0],"locale": row[1],"top_img": None,"slide_items": None,"timetable": False})
    items['index_items'].append(line)

f = open('output.json', 'w')
json.dump(items, f, indent=2, ensure_ascii=False)

特筆するようなところは特になし。json.dump便利。

で、ローカルでちゃんと表示されるか試してみたら結構衝撃的な絵になった

馴染みの深い瀬戸内海だけど、まだこの中の半分にも行けてないのかと思うとちょっとロマンを感じてしまう不思議。 f:id:kamonohashiy:20190516213454p:plain

この後は「各島とそこへ行く船が出る本土側の港」の座標データ、さらにはその船の膨大な量の時刻表データが欲しいんだけど、さてどうしたもんかな。