【发布时间】:2019-07-10 02:42:50
【问题描述】:
我有一个问题的变体已经被问过,但我无法在我之前的所有帖子中找到针对我的特定问题的答案。所以我希望有人可以帮助我...
我有一个这样的 csv 文件(在此示例中,共有 18 行和 4 列,前 2 行包含标题)。
“员工.csv”17 ID 名称 值 位置 25-2002 詹姆斯 1.2919 金融 25-2017 马修 2.359 法律 30-3444 Rob 3.1937 行动 55-8988 弗雷德 3.1815 研究 26-1000 丽莎 4.3332 研究 56-0909 约翰 3.3533 法律 45-8122 安娜 3.8887 财务 10-1000 雷切尔 4.1448 维护 30-9000 弗兰克 3.7821 维护 25-3000 安吉拉 5.5854 服务 45-4321 克里斯托弗 9.1598 法律 44-9821 麦迪 8.5823 服务 20-4000 露丝 7.47 操作 50-3233 维拉 5.5092 操作 65-2045 悉尼 3.4542 行政人员 45-8720 弗拉基米尔 0.2159 财务
我想将第 3 列中的值四舍五入为 2 位小数,即 round(value, 2)。所以基本上,我想打开文件,读取第 3 列(减去前 2 行),对每个值进行四舍五入,将它们写回,然后保存文件。在阅读了其他类似的帖子后,我现在了解到最好总是创建一个临时文件来完成这项工作,而不是尝试一次更改同一个文件。所以我有以下代码:
import csv, os
val = []
with open('path/Employees.csv', 'r') as rf, open('path/tmpf.csv, 'w') as tmpf:
reader = csv.reader(rf)
writer = csv.writer(tmpf)
for _ in range(2): #skip first 2 rows
next(reader)
for line in reader:
val.append(float(line[2])) # read 3 column into list 'val'
# [... this is where i got stuck!
# ... how do I round each value of val, and
# ... write everything back to the tmpf file ?]
os.remove('path/Employees.csv')
os.rename('path/tmpf', 'path/Employees.csv')
谢谢!
【问题讨论】:
标签: python-3.x csv overwrite