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

如何使用python在csv中查找和替换,python,csv,file-read,Python,Csv,File Read,我有一个csv文件,有900行11列。它包含大约4000个链接,我想用4000个链接替换它。我有另一个csv文件,它包含第1列和第2列中的两个链接。 我正在尝试使用python自动查找和替换它 这是我的代码,但它不工作。事实上,我没有得到任何错误,但程序连续运行,没有给出任何结果。我跑了2分钟。3个小时后,他无助地杀死了它 import csv def replace_all(text, dic): for i, j in dic.iteritems(): text = text.r

我有一个csv文件,有900行11列。它包含大约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')
这将只剩下newdata中文件的最后一行。也许换成newdata+=呢?或者在循环中写入输出行。但是,为什么不对这两个文件都使用csvfile呢?

我自己解决了这个问题 谢谢大家的帮助

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

寻求调试帮助的问题此代码为什么不起作用?必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建一个。我没有向下投票,但这就是为什么你被向下投票。为什么你不使用csv模块来读取main.csv?它不工作可能是一个准确的描述,但我们需要更多的信息。对,但你仍然可以调试。添加一些打印功能。d是否包含您期望的内容?每个循环中的一个打印将告诉您它在哪里卡住。新数据也是如此。或者在交互式python shell或IPython中逐节粘贴它。
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()