Изменение определенного значения в файле 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. Спасибо!
Ответы
Ответ 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%
и я хочу изменить все %
на $
? что я могу сделать с библиотекой панд