ゲームエンジニアの雑記ブログ

ゲームエンジニアの雑記ブログ。テーマ自由、技術について解説します

PythonでJSON、YAML、CSV、Excelのパース方法まとめ

PythonでJSON、YAML、CSV、Excelのパース方法まとめ

こんにちは、エンジニアのオオバです。

  • JSON
  • YAML
  • CSV
  • Excel

よく使うファイルのPythonパース方法を
まとめてみたいと思います。

→11万文字で徹底解説した「DOTweenの教科書」Unityアニメーションの超効率化ツールはこちら

ライブラリの準備

JSONYAMLCSVExcel
なしPyYAMLなしopenpyxl

YAML、Excelは
追加ライブラリを使ってパースします。

追加ライブラリのインストール
$ python3 -m pip install pyyaml  
$ python3 -m pip install openpyxl  

JSONパース

filename = "json.json"  
with open(filename, "r", encoding="utf-8") as f:  
    json_data = json.load(obj)  

# 要素をランダムに選ぶ
data = random.choice(json_data)  
print(data["no"], data["sakusya"])  

YAMLのパース

# jsonをYAMLに変換
# ※先のJSONパースのjson_dataを使用
yaml_str = yaml.dump(json_data)  
yaml_data = yaml.load(yaml_str)  

print(yaml_data[0]["sakusya"])  

CSVパース

print("===== CSVのパース =====")  
filename = "csv.csv"  
csv = codecs.open(filename, "r", "utf-8").read()  

data = []  
rows = csv.split("\r\n")  
for row in rows:  
    if row == "":continue  
    cells = row.split(",")  
    data.append(cells)  

print(data[0][1], data[0][2])  

Excelパース

filename = "excel.xlsx"  
book = openpyxl.load_workbook(filename)  

# 先頭のシートを得る
sheet = book.worksheets[0]  
data = []  
for row in sheet.rows:  
    # 1行目  
    r0 = row[0].value  
    # 3行目  
    r2 = row[2].value  
    # 空セルを除く  
    if not r0 is None and not r2 is None:  
        data.append([  
            row[0].value,  
            row[2].value  
        ])  

まとめ

よく使うファイル形式を
Pythonでパースする方法を紹介しました。

  • JSON
  • YAML
  • CSV
  • Excel

ぼくの場合、
GoogleSpreadシートから
JSON、CSVを受け取って
Pythonで処理することが多いです。

パース方法を忘れた時に
見返してもらえればと思います。

サンプルコード全文

variableparser.py

「Unity初心者大学」というUnity初心者向けのYouTube始めました!!
ぜひチャンネル登録をお願いします!

最後まで読んでいただきありがとうございました!
すばらしいPythonパースライフをお過ごしください。

オススメ記事
検証環境
  • macOS BigSur 11.5.2
  • Python 3.9.6
  • PyYAML v5.4.1
  • openpyxl v3.0.8