Python通过修改CSV文件中的特定值改变特定值

2024-04-19 00:37:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要更改csv文件列的特定值的方法。例如,我有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新手。谢谢!


Tags: 文件csv方法ipsites新手
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

现在,如果要更改第一行“站点”列中的值,请运行:

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)

不能真正替换现有文件中的值。相反,你需要:

  1. 读取现有文件
  2. 更改内存中的文件
  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)

相关问题 更多 >