我有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')
答案 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()