Изменение определенного значения в 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. Спасибо!

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)

вы не можете заменить значения в существующем файле. Вместо этого вам нужно:

  1. читать в существующем файле
  2. изменить файл в
  3. написать новый файл (перезапись существующего файла)

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


вы можете использовать мощную библиотеку под названием панды. Вот пример.

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)