【初心者向け】Pythonで簡単にCSVとJSONを操作してみた

PythonでCSVとJSONの操作 プログラミング

データ処理において、CSVやJSONは最も一般的なファイル形式の2つです。Pythonには、これらのファイル形式を効率的に読み書きするための標準モジュールが用意されています。本記事では、csv、jsonモジュールの基本的な操作方法を解説します。

csv

reader/writer

CSVの操作として基本的なファイルへの書き込み・読み取り操作を解説します。

・csv.reader()では、CSVファイルを1行ごとにリスト形式で読み込みます。
・csv.writer()では、writerow(s)(list)で書き込みを行うことができます。

import csv

# csvへの書き込み
with open('test.csv',mode='w',newline='',encoding='utf-8') as f:
    writer=csv.writer(f)
    writer.writerow(['first-name','last-name','age'])
    writer.writerows([['suzuki','ichiro',50],
                     ['yamada','hanako',40],
                     ['sato','jiro',30]])
    
# csv読み込み
with open('test.csv',mode='r')as f:
    reader=csv.reader(f)
    for row in reader:
        print(row)

# >>> ['first-name', 'last-name', 'age']
# >>> ['suzuki', 'ichiro', '50']
# >>> ['yamada', 'hanako', '40']
# >>> ['sato', 'jiro', '30']

DictReader/DictWriter

・csv.DictReader()では辞書形式でデータを読み込みます。キー情報はヘッダーになります。
・csv.Dictwriter()では、辞書形式でデータを書き込みます。Fieldnames=ヘッダー情報を定義しておき、writeHeader()書き込みが行えます。

# csv書き込み(Dictwriter)
data=[
    {'first-name':'suzuki','last-name':'ichiro','age':50},
    {'first-name':'yamada','last-name':'hanako','age':40},
    {'first-name':'sato','last-name':'jiro','age':30}
    ]

with open('test2.csv',mode='w',newline='',encoding='utf-8')as f:
    fieldnames=['first-name','last-name','age']
    writer=csv.DictWriter(f,fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(data)

# csv読み込み(Dictredear)
with open('test2.csv',mode='r',encoding='utf-8')as f:
    reader=csv.DictReader(f)
    for row in reader:
        print(row)
        
# >>> {'first-name': 'suzuki', 'last-name': 'ichiro', 'age': '50'}
# >>> {'first-name': 'yamada', 'last-name': 'hanako', 'age': '40'}
# >>> {'first-name': 'sato', 'last-name': 'jiro', 'age': '30'}

json

dumps/loads

jsonの基本的な操作として、jsonファイルの書き込みと読み取り操作を解説します。

・dumps()とloads()はファイルオブジェクトは扱いません。
・dumps()でjsonに変換したオブジェクトはPythonでは文字列として扱われます。

import json

# Json書き込み(dumps)
data = [
    {"first-name": "suzuki", "last-name": "ichiro", "age": 50},
    {"first-name": "yamada", "last-name": "hanako", "age": 40},
    {"first-name": "sato", "last-name": "jiro", "age": 30},
]
print(json.dumps(data, indent=4, sort_keys=False))

# >>> [
# >>>     {
# >>>         "first-name": "suzuki",
# >>>         "last-name": "ichiro",
# >>>         "age": 50
# >>>     },
# >>>     {
# >>>         "first-name": "yamada",
# >>>         "last-name": "hanako",
# >>>         "age": 40
# >>>     },
# >>>     {
# >>>         "first-name": "sato",
# >>>         "last-name": "jiro",
# >>>         "age": 30
# >>>     }
# >>> ]


# Json読み込み(loads)
json_data = '[{"first-name": "suzuki", "last-name": "ichiro", "age": 50}, {"first-name": "yamada", "last-name": "hanako", "age": 40}, {"first-name": "sato", "last-name": "jiro", "age": 30}]'
print(json.loads(json_data))

# >>> [{'first-name': 'suzuki', 'last-name': 'ichiro', 'age': 50}, {'first-name': 'yamada', 'last-name': 'hanako', 'age': 40}, {'first-name': 'sato', 'last-name': 'jiro', 'age': 30}]

dump/load

・json.load(file)で、jsonファイルを読み込みます。オブジェクトは辞書として、配列はリストとして読み込まれます。
・json.dump(data,file,indent)で、辞書やリストをJson形式で書き込みます。

# jsonファイル書き込み(dump)
with open("test.json", mode="w", encoding="utf-8") as f:
    json.dump(data, f, indent=4)

# jsonファイル読み込み(load)
with open("test.json", mode="r", encoding="utf-8") as f:
    print(json.load(f))

# >>> [{'first-name': 'suzuki', 'last-name': 'ichiro', 'age': 50}, {'first-name': 'yamada', 'last-name': 'hanako', 'age': 40}, {'first-name': 'sato', 'last-name': 'jiro', 'age': 30}]


タイトルとURLをコピーしました