IBM Cloudのサービスを使っている途中、膨大なcsvデータをJSON形式に変換しなければならないという作業に直面したので、初めてプログラムというものを書いてみました。
(もちろん一人ではできないので 周りの力を借りました ^^;)
業務上、人工知能に携わっているので 今後Pythonを使えるようになりたいと思いPythonでプログラムを書いてみました。
ちなみにPython知識ゼロでのスタートです ><
(List型とか辞書型とかもうついていけなかった。。)
ネット上で参考にしたサイトではListという型を使って書かれている方がほとんどでしたが、
今回は出力したい形式上「型」というものを意識せずに書いてみました。
至らない点がございましたら、ご指導ご鞭撻のほどよろしくお願いいたします。
import csv
import json
import codecs
#csvファイルを読み込む
with open("SampleData.csv") as f:
#readerという変数に読み込んだものを格納する
reader = csv.DictReader(f, delimiter=",", quotechar='"')
#書き出したい場所を指定する
with open('SampleData.json', 'w') as f:
#write=出力コマンド
f.write("{")
#for文を回す
for row in reader:
#表示させたい文字(読み込んだファイルの中にはない内容)
f.write("\n") #改行
f.write(" \"add\": {")
f.write("\n")
f.write(" \"doc\": ")
#読み込んだcsvファイルの情報をjsonに出力させる
json.dump(row, f, ensure_ascii=False ,indent=1 , encoding='utf-8')
f.write("},")
#表示させたい文字(読み込んだファイルの中にはない内容)
f.write("\n")
f.write("\"commit\" : {}}")
整形後はこんな感じになります。
{
"add": {
"doc": {
"title": "『△△クラウド』スケジューラー 使用説明書類",
"filename": "元文書へのリンク",
"keyword1": "",
"body1": "20××年8月10日サービスインの『△△クラウド』スケジューラーの使用にあたり、使い方等の説明書類を掲示致します。",
"keyword2": "",
"id": "1001",
}},
"add": {
"doc": {
"title": "『△△クラウド』における個人端末使用許可申請のルール",
"filename": "元文書へのリンク",
"keyword1": "",
"body1": "△△クラウドにおける個人端末使用許可申請のルール・・・",
"keyword2": "",
"id": "1002",
}},
"commit" : {}}
以上になります。
正直、delimiterとか quotecharとか何者なのかよく分かっていないです…(笑)
→ APIドキュメントの csv.DictReader 経由、csv.reader 経由、「Dialect クラスと書式化パラメータ」に説明があります。
今後少しずつ分からないものを潰して Pythonを覚えていけたらいいなあと思います。
最後まで見てくださりありがとうございました。