import csv
def read_data(filename):
data = {}
with open('data.csv') as fp:
reader = csv.DictReader(fp) # auto-detects field names
for row in reader:
key = row['COUNTRY']
value = {k: v for k, v in row.items() if k != 'COUNTRY'}
data[key] = value
return data
def write_data(data, filename, fieldnames):
with open('data.csv', 'w') as fp:
writer = csv.DictWriter(fp, fieldnames=fieldnames)
for key, value in data.items():
row = {'COUNTRY': key, **value}
row[''] = key
writer.writerow(row)
data = read_data('data.csv')
data['COUNTRYD']['CONFIRMED'] = 10
fieldnames = list(next(data.values()).keys()) # get the field names from the first element in the dataset
write_data(data, 'data.csv', fieldnames)
不可能像您在文章中演示的那样可靠地对CSV文件进行“就地”更新。通常,您只需覆盖该文件即可
然而,在内存中修改表格数据非常容易。我建议使用Pandas库作为其数据帧数据结构
例如,如果要加载该文件,请将D国的确诊病例数更改为10,然后重新保存该文件,代码如下所示:
如果您希望有一个更健壮的应用程序,例如处理并发/线程更新或非常频繁的更新,则应使用不同的文件格式。为此,我个人使用SQLite数据库,并在标准库中使用sqlite3包
编辑-
如果不能使用Pandas,可以使用标准库中的csv package读取和写入数据。我建议将数据存储在一个dict-of-dict中。下面是一个例子:
请仔细阅读这个例子。与往常一样,不要复制和粘贴您不完全理解的代码
相关问题 更多 >
编程相关推荐