如何使用python在csv中查找和替换

时间:2018-01-14 20:51:07

标签: python csv file-read

我有900行和11列的csv文件。它包含大约4000个链接,我想用4000个链接替换(我有另一个csv文件,其中包含第1列和第2列中的两个链接)。 我试图使用python自动化(查找和替换) 这是我的代码,但它不起作用。实际上我没有收到任何错误,但程序连续运行而没有给出任何结果。我跑了2. 3个小时,无助地杀了它。

import csv 
def replace_all(text, dic):
  for i, j in dic.iteritems():
   text = text.replace(i, j)
 return text

with open('file_that_find_replace_data.csv', mode='r') as infile:
 reader = csv.reader(infile)
 d = {rows[0]:rows[1] for rows in reader}

f = open('main_file.csv','r') 
filedata = f.read() 
for row in filedata:
  newdata = replace_all(filedata, d)

f = open('main_file.csv','w') 
f.write(newdata) 
f.close()
print ('done')

2 个答案:

答案 0 :(得分:0)

for row in filedata:
  newdata = replace_all(filedata, d)

这将只留下newdata中文件的最后一行。也许newdata +=代替?或者在循环中写入输出行。但是,为什么不为这两个文件使用csvfile呢?

答案 1 :(得分:0)

我自己解决了 谢谢大家的帮助

import csv
findd=[]
repl=[]
with open('find_replace_data.csv', mode='r') as infile:
  reader = csv.reader(infile)
  for rows in reader:
      a= rows[0]
      b= rows[1]
      findd.append(a)
      repl.append(b)



ifile = open('infile.csv', 'rb')
reader = csv.reader(ifile)
ofile = open('outfile.csv', 'wb')
writer = csv.writer(ofile)

rep = dict(zip(findd, repl))

s = ifile.read()
for item in findd:
    s = s.replace(item, rep[item])
ofile.write(s)
ifile.close()
ofile.close()