前提・実現したいこと
pythonでのcsv操作についての質問です。
inputで「好きな果物の名前」を取得し、'Name'カラムに果物の名前を、'Count'カラムにその果物の登場回数を
csvファイルに書き加えていくという処理を書こうとしています。
新たな果物を新規の行に書き込む処理はわかるのですが、「既存の果物の名前を取得したときにその行の'Count'を一つ増やすという処理」がどうしてもわかりません。
csv
1Name,Count 2Apple,1 3Banana,1 4Peach,1 5Orange,1
例えばinput()で'Orange'を取得した場合、
csv
1Name,Count 2Apple,1 3Banana,1 4Peach,1 5Orange,2
このように更新したいです。
今は標準ライブラリだけでやろうとしているのですが、サードパーティーのライブラリ使用などの選択肢も含めてどなたがご教授頂きたいです。
よろしくお願いいたします。
追記:
python
1fruit_name = input() 2fruit_name_title = furit_name.title() 3 4if os.path.exists('fruits_ranking.csv'): 5 with open('fruits_ranking.csv', 'r+', newline='') as f: 6 reader = csv.DictReader(f) 7 for i in reader: 8 if i['Name'] == fruit_name_title: 9 '......' 10 11else: 12 with open('fruits_ranking.csv', 'w', newline='') as f: 13 fieldnames = ['Name', 'Count'] 14 writer = csv.DictWriter, fieldnames=fieldnames) 15 writer.writeheader() 16 writer.writerow({'Name': fruit_name_title, 'Count': 1})
現状の説明が足りなくて申し訳ありません。
自分で考えた流れとしては、
・果物の名前を受け取る
・'fruits_ranking.csv'のファイルが存在するか調べる
・無ければファイルを新規で作り{'Name': fruit_name_title, 'Count': 1}を書き込む
・ファイルが存在する場合は各行をforループで回し、if i['Name'] == fruit_name_title:に引っかかった行に対して['Count']の更新はできないだろうかと考えていました。
一連の条件分岐に関しては一応機能するものを書けたのですが、csvの更新に関しては一度テキストファイルの形に変換してから部分的に上書きし、再度csvに反映させるなど考えてはみたのですが、実際にコードに起こせるだけの引き出しもなく行き詰ってしまいました。何かしらアドバイス頂けるとありがたいです。
補足情報(FW/ツールのバージョンなど)
Windows10
Python3
Pycharm