Изменить определенное значение в файле CSV через Python

Мне нужен способ изменить конкретное значение столбца файла CSV. Например, у меня есть CSV-файл:

"Ip","Sites"
"127.0.0.1",10
"127.0.0.2",23
"127.0.0.3",50

и мне нужно изменить значение с 23 на 30 значения «127.0.0.2».

Я использую библиотеку CSV: импорт CSV

Цени любую помощь, поскольку я новичок в Python. Спасибо!

 ihorko14 июн. 2012 г., 15:11
Итак, я могу читать из CSV-файла и записывать в CSV-файл, но у меня нет идеи, как изменить значения в существующем файле ...
 Simeon Visser14 июн. 2012 г., 15:13
Не могли бы вы опубликовать код для чтения / записи, который у вас уже есть? В какой-то момент вы должны иметь данные в Python, и вы можете изменить их там перед записью.

Ответы на вопрос(3)

Решение Вопроса

открывающее файл csv, изменяющее значения в памяти и затем записывающее изменения на диск.

r = csv.reader(open('/tmp/test.csv')) # Here your csv file
lines = list(r)

Содержание строк:

[['Ip', 'Sites'],
 ['127.0.0.1', '10'],
 ['127.0.0.2', '23'],
 ['127.0.0.3', '50']]

Изменение значений:

lines[2][1] = '30'

Содержание строк:

[['Ip', 'Sites'],
 ['127.0.0.1', '10'],
 ['127.0.0.2', '30'],
 ['127.0.0.3', '50']]

Теперь нам осталось только записать его обратно в файл

writer = csv.writer(open('/tmp/output.csv', 'w'))
writer.writerows(lines)
 13 июл. 2017 г., 15:57
Вы должны закрыть писателя?
 04 мар. 2015 г., 11:28
Если вы столкнулись с проблемой двойного перевода строки в написанном CSV, вы можете попробовать открыть файл в двоичном виде:writer = csv.writer(open('/tmp/output.csv', 'wb'))
 17 июл. 2017 г., 11:56
Вы должны закрыть файловый дескриптор, но не писатель. Вы можете использовать & quot; с & quot; управлять файлами

сто этого вам необходимо:

read in existing file alter file in memory write out new file (overwriting existing file)

То, что вы также можете сделать, это прочитать существующий файл построчно, записать его в новый файл и заменить значения на лету. Когда закончите, закройте оба файла, удалите оригинал и переименуйте новый файл.

т пример.

import pandas as pd
df = pd.read_csv("test.csv")
df.head(3) #prints 3 heading rows

Выход:

    Ip  Sites
0   127.0.0.1   10
1   127.0.0.2   23
2   127.0.0.3   50

Теперь, если вы хотите изменить значение в «Сайтах» в столбце 1-го ряда запустите:

df.set_value(1, "Sites", 30)

Если вы хотите изменить все значения, где «Ip»; равен 127.0.0.2, запустите:

df.loc[df["Ip"]=="127.0.0.2", "Sites"] = 30

Наконец, чтобы сохранить значения:

df.to_csv("test.csv", index=False)
 03 апр. 2018 г., 08:42
Это не связано с этим кодом. Кажется, у вас нет прав на запись в файл.
 30 мар. 2018 г., 14:34
Хотя это работает большую часть времени. Иногда это даетPermissionError: [Errno 13] Permission denied: 'file.csv' Можете ли вы подозревать, что может быть причиной?

Ваш ответ на вопрос