使用Python替换CSV文件中的数据

2 投票
2 回答
23146 浏览
提问于 2025-04-17 10:29

这是新的输入文件格式。我需要用Python自动化处理,把一个.csv文件中某一列的内容替换掉。我也可以用记事本打开这个.csv文件,然后手动替换那一列的内容,但文件太大了,花的时间太长。

Name                          ID                                                class  Num
"kanika",""University ISD_po.log";" University     /projects/asd/new/high/sde"","MBA","12"
"Ambika",""University ISD_po.log";" University     /projects/asd/new/high/sde"","MS","13"

在上面的例子中,我需要替换的是ID这一列的内容。ID这一列的内容很不一致,里面有很多空格和一些符号,比如(; , /)。我想把ID列的新内容改成“input”。

这个ID列是用两个双引号包围的,还有一些多余的空格。而其他列则只有一个双引号。

有没有什么方法可以用Python来实现这个呢?

2 个回答

14

你可以在Python中使用csv模块来实现这个功能。

csv.reader会把每一行的数据以字符串列表的形式返回。然后你可以用csv.writer来逐行写入数据,并在这个过程中修改ID这一列,不过这样会生成一个新文件。

所以:

import csv
reader = csv.reader(open('file.csv', 'rb'))
writer = csv.writer(open('outfile.csv','wb'))
for row in reader:
    writer.writerow([row[0], "input", row[2], row[3]])
4

逐行读取 .csv 文件,按照 , 进行分割,然后把第二列的内容替换成 "input"。在这个过程中,把修改后的内容写入一个不同的文件:

f = open('mycsv.csv','rb')
fo = open('out.csv','wb')

# go through each line of the file
for line in f:
    bits = line.split(',')
    # change second column
    bits[1] = '"input"'
    # join it back together and write it out
    fo.write( ','.join(bits) )

f.close()
fo.close()

如果你愿意,可以把这个新文件重命名为原来的文件名,以此来替换掉原文件。

撰写回答