Help us understand the problem. What is going on with this article?

CSV形式をJSON形式に変換するPythonプログラム

More than 1 year has passed since last update.

IBM Cloudのサービスを使っている途中、膨大なcsvデータをJSON形式に変換しなければならないという作業に直面したので、初めてプログラムというものを書いてみました。
(もちろん一人ではできないので 周りの力を借りました ^^;)

業務上、人工知能に携わっているので 今後Pythonを使えるようになりたいと思いPythonでプログラムを書いてみました。
ちなみにPython知識ゼロでのスタートです ><
(List型とか辞書型とかもうついていけなかった。。)
ネット上で参考にしたサイトではListという型を使って書かれている方がほとんどでしたが、
今回は出力したい形式上「型」というものを意識せずに書いてみました。

至らない点がございましたら、ご指導ご鞭撻のほどよろしくお願いいたします。

main.py
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\" : {}}")

整形後はこんな感じになります。

SampleData.json
{
 "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を覚えていけたらいいなあと思います。

最後まで見てくださりありがとうございました。

icecream9
IT企業に勤める新人SE 23歳です。 備忘録 / 勉強 目的で始めました。 洋服、サンリオ、抹茶スイーツ、アイナナが好きです。周りからはよく私がIT業界に就職したことに驚かれますが、こんなITど素人典型的女子でもこの業界やっていけることを証明するために日々勉強中です。 よろしくお願いします。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away