Подтвердить что ты не робот

Изменение определенного значения в файле 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: import csv

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

4b9b3361

Ответ 1

Это решение, открывающее файл 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)

Ответ 2

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

  • читать в существующем файле
  • изменить файл в памяти
  • записать новый файл (перезаписать существующий файл)

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

Ответ 3

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

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

Теперь, если вы хотите изменить значение в столбце "Сайты" в первой строке, запустите:

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)

Ответ 4

Как насчет, если у вас есть данные, как

    Model  Price
 1. Q.     1$
 2. A.     5$
 3. F.     2%
 4. G.     8%

и я хочу изменить все % на $? что я могу сделать с библиотекой панд