0
Help us understand the problem. What are the problem?

posted at

Organization

【Python】csv.DictReaderで数値(int型のデータ)を読み込む

はじめに

プログラミング初学者です.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

参考文献

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?