У меня есть вопрос, варианты которого уже были заданы, но я не могу найти ответ среди всех предыдущих сообщений на мой конкретный вопрос.Поэтому я надеюсь, что кто-то может мне помочь ...
У меня есть CSV-файл как таковой (в этом примере всего 18 строк и 4 столбца, причем первые 2 строки содержат заголовки).
"Employees.csv" 17 ID Имя Значение Расположение 25-2002 Джеймс 1.2919 Финансы 25-2017 Мэтью 2.359 Юридический 30-3444 Роб 3.1937 Операции 55-8988 Фред 3.1815 Исследования 26-1000 Лиза 4.3332 Исследования 56-0909 Джон 3.3533Legal 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 Legal 44-9821 Maddie 8.5823 Обслуживание 20-4000 Ruth 7.47 Операции 50-3233 Vera 5.5092 Операции 65-2045 Сидней 3.4542 Исполнительный 45-8720 Владимир 0.2159 Финансы
Я бы хотел округлить значения в 3-м столбце до 2 десятичных знаков, т.е. округлить (значение, 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')
Спасибо!