使用python替换csv文件中的数据

时间:2012-01-18 04:24:31

标签: python csv

这是新的输入文件格式。我需要使用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列包含2个双引号,并且还有一些额外的空格。而其他列只有1个双引号。

有没有办法在python中做到这一点?

2 个答案:

答案 0 :(得分: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]])

答案 1 :(得分:4)

逐行读取.csv,在,上拆分,并用“输入”替换第二列。 把它写出来(到另一个文件):

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()

然后,如果您愿意,可以重命名它以替换原始文件。