在运行以下代码后,假设我有一个这样的CSV文件:
Andy, 4
Bochr, 2
John, 9
import csv
name = input('name: ')
score = input('score: ')
with open('test.csv', 'a') as f:
a = csv.writer(f)
data = [name, score]
a.writerow(data)
如果我再次运行该代码并且我的名字是Andy,我如何将我的分数追加到第一行而不是开始一个名为Andy的新行? 例如,我们说我再次得了5分。你会如何将它添加到Andy的第一行看起来像:
Andy, 4, 5
Bochr, 2
John, 9
提前谢谢你,
答案 0 :(得分:1)
听起来你想要的东西更像是数据库或数据结构,而不是文本文件。一种具有非常易读的数据格式的解决方案是json:
import json
initial_data = {
'Andy': [4],
'Bochr': [2],
'John': [9],
}
with open('test.json', 'w') as fp:
json.dump(initial_data, fp, indent=4)
然后您的更新会更简单:
with open('test.json', 'r') as fp:
data = json.load(fp)
data['Andy'].append(5)
并保存更新的数据:
with open('test.json', 'w') as fp:
json.dump(initial_data, fp, indent=4)
答案 1 :(得分:0)
试试这个:
import csv
name = input('name: ')
score = input('score: ')
rows_list = []
with open('test.csv') as fin:
reader = csv.reader(fin)
for row in reader:
if row[0] == name:
row[1] = score
rows_list.append(row)
with open('test.csv', 'w') as f:
a = csv.writer(f)
data = rows_list
a.writerows(data)
请记住,这假设您已经有一个test.csv存在