我需要改變csv文件列的特定值的方式。例如,我有csv文件:通過Python更改CSV文件中的特定值
"Ip","Sites"
"127.0.0.1",10
"127.0.0.2",23
"127.0.0.3",50
並且我需要將「127.0.0.2」的值23更改爲30。
我使用CSV庫:導入CSV
感謝所有幫助我在Python是新。謝謝!
我需要改變csv文件列的特定值的方式。例如,我有csv文件:通過Python更改CSV文件中的特定值
"Ip","Sites"
"127.0.0.1",10
"127.0.0.2",23
"127.0.0.3",50
並且我需要將「127.0.0.2」的值23更改爲30。
我使用CSV庫:導入CSV
感謝所有幫助我在Python是新。謝謝!
這是打開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)
您無法真正替換現有文件中的值。相反,你需要:
你也可以做的就是在讀什麼現有的文件逐行寫入到一個新文件中,同時替換實時值。完成後,關閉這兩個文件,刪除原始文件並重命名新文件。
您可以使用非常強大的名爲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
現在,如果你想改變在第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)
所以,我可以從CSV文件讀取和寫入csv文件,但我沒有一個想法如何repace在現有文件中的值... – ihorko
你能發佈讀/寫你已經擁有的代碼?在某些時候,你應該有Python中的數據,你可以在寫之前修改它。 –