前提・実現したいこと
コードを実行するとおすすめのレストラン名を聞かれます。
おすすめのレストラン名の質問に対しての回答はrestaurant.csvにて、
"Name"キーと"Count"キーにて保存されます。
"Name"キーには質問の回答のレストラン名が入り、
"Count"キーには質問に対しての回答で何回そのレストラン名が出てきたかをカウントします。
発生している問題・エラーメッセージ
初めて名前が出てきたレストランはしっかりとcsvに記録がされるのですが、
二回目以降名前が出てきたレストラン名に関しては上手く"Count"キーがカウントアップされません、
何故でしょうか。
該当のソースコード
Python
1import csv 2import os 3 4 5print("#####################################################") 6print("どこのレストランが好きですか?") 7print("#####################################################") 8restaurant = input() 9 10# csvファイルが無かったら作成+書き加える→else、在ったら書き加える→if。 11if os.path.exists("restaurant.csv"): 12 with open("restaurant.csv", "r+", newline='') as res_csv: 13 fieldnames = ["Name", "Count"] 14 writer = csv.DictWriter(res_csv, fieldnames=fieldnames) 15 # addはレストランの名前があるか否かのトリガー 16 restaurant_is_exist = False 17 # res_csvをfor文でListにできるように変換 18 new_csv = csv.reader(res_csv) 19 for row in new_csv: 20 print(row) # ここのrowはlist型 21 if (restaurant in row) == True: 22 print(int(row[1]) + 1) 23 row[1] = int(row[1]) + 1 24 print("Restaurant is Exist") 25 restaurant_is_exist = True 26 if restaurant_is_exist == False: 27 writer.writerow({"Name": restaurant, "Count": 1}) 28 print("Restaurant is not Exist") 29 print("If") 30else: 31 with open("restaurant.csv", "w", newline='') as res_csv: 32 fieldnames = ["Name", "Count"] 33 writer = csv.DictWriter(res_csv, fieldnames=fieldnames) 34 writer.writeheader() 35 writer.writerow({"Name": restaurant, "Count": 1}) 36 print("Else")
試したこと
コード中の、
Python
1print(int(row[1]) + 1)
で、実際にカウントアップ出来るのかを確認したりしてみたのですが、
カウントアップは出来ているようでした、しかしそれがrestaurant.csvには反映されていないようです。
補足情報
restaurant.csvの中身です(画像添付出来なかったのでリンクで失礼します)、
これは二回動作させて一回目をhoge、二回目をhogehogeにした結果です。
画像

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/11 05:32 編集
2018/10/11 05:32