Изменение определенного значения в 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)
вы не можете заменить значения в существующем файле. Вместо этого вам нужно:
- читать в существующем файле
- изменить файл в
- написать новый файл (перезапись существующего файла)
то, что вы также можете сделать, это читать в существующем файле строку за строкой, записывая его в новый файл, заменяя значения на лету. После этого закройте оба файла, удалите оригинал и переименуйте новый файл.
вы можете использовать мощную библиотеку под названием панды. Вот пример.
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)