我有一个已经提出其变体的问题,但是我无法在以前的所有帖子中找到该问题的答案。所以我希望有人可以帮助我...
我有一个这样的csv文件(在此示例中,共有18行和4列,其中前2行包含标题)。
“ Employees.csv” 17 ID名称值位置 25-2002 James 1.2919金融 25-2017马修2.359法律 30-3444 Rob 3.1937行动 55-8988 Fred 3.1815研究 26-1000 Lisa 4.3332研究 56-0909 John 3.3533 Legal 45-8122 Anna 3.8887财务 10-1000 Rachel 4.1448维护 30-9000 Frank 3.7821维护 25-3000 Angela 5.5854服务 45-4321 Christopher 9.1598法律 44-9821 Maddie 8.5823服务 20-4000露丝7.47行动 50-3233 Vera 5.5092操作 65-2045悉尼3.4542行政公寓 45-8720弗拉基米尔0.2159金融
我想将第三列中的值四舍五入为两位小数,即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')
谢谢!
答案 0 :(得分:0)
您可以
rounded_val = [ round (v,2) for v in val ]
生成舍入值列表。