はじめに
プログラミング初学者です.CSVファイルをPythonのcsv.DictReaderで読み込む際に起きたエラーとその解決法を共有します.
環境
- Python 3.9.4
ターミナル
$ python3 --version
Python 3.9.4
エラー発生時のコード
- 読み込み対象のファイル
food_calories.csv
food,calorie
ramen,443
coffee,7
cheesecake,281
hamburger,300
chickencurry,690
- 先のCSVファイルを読み込むコード
add_calories.py
import csv
sum_of_calories = 0
with open("food_calories.csv") as file:
data = csv.DictReader(file)
for row in data:
name = row["food"]
calorie = row["calorie"]
print("name : %s, calorie : %d" % (name, calorie))
sum_of_calories += calorie
print("sum = %d" % sum_of_calories)
発生したエラー
次のエラーが発生しました.
ターミナル
$ python3 add_calories.py
Traceback (most recent call last):
File "/hogehoge/add_calories.py", line 11, in <module>
print("name : %s, calorie : %d" % (name, calorie))
TypeError: %d format: a number is required, not str
解決方法
csv.DictReaderは読み込んだデータを文字列(str型)として扱うので,int型に変換する必要がありました.
calorie = int(row["calorie"])
実行結果
プログラムを動かすことができました.
ターミナル
$ python3 add_calories.py
name : ramen, calorie : 443
name : coffee, calorie : 7
name : cheesecake, calorie : 281
name : hamburger, calorie : 300
name : chickencurry, calorie : 690
sum = 1721