我的以下代码可以正常工作,但速度太慢了。我将非常感谢您提供的任何帮助:
import gf
import csv
cic = gf.ct
cii = gf.cit
li = gf.lt
oc = "Output.csv"
with open(cic, "rb") as input1:
reader = csv.DictReader(cie,gf.ctih)
with open(oc,"wb") as outfile:
writer = csv.DictWriter(outfile,gf.ctoh)
writer.writerow(dict((h,h) for h in gf.ctoh))
next(reader)
for ci in reader:
row = {}
row["ci"] = ci["id"]
row["cyf"] = ci["yf"]
with open(cii,"rb") as ciif:
reader2 = csv.DictReader(ciif,gf.citih)
next(reader2)
with open(li, "rb") as lif:
reader3 = csv.DictReader(lif,gf.lih)
next(reader3)
for cii in reader2:
if ci["id"] == cii["id"]:
row["ci"] = cii["ca"]
for li in reader3:
if ci["id"] == li["en_id"]:
row["cc"] = li["c"]
writer.writerow(row)
我为 reader 中的每一行打开 reader2 和 reader3 的原因是因为 reader 对象迭代一次然后完成。但是必须有一种更有效的方法来做到这一点,我将非常感谢您提供的任何帮助!
如果有帮助,此代码背后的直觉如下:从输入文件 1 中,抓取两个单元格;查看输入文件 2 是否具有与输入文件 1 中相同的主键,如果是,则从输入文件 2 中抓取一个单元格并将其与其他两个已保存的单元格一起保存;查看输入文件 3 的主键是否与输入文件 1 中的主键相同,如果是,则从 inputfile3 中抓取一个单元格并保存。然后输出这四个值。也就是说,我正在从规范化表中获取元数据,并尝试对其进行非规范化。必须有一种方法可以在 Python 中非常有效地做到这一点。当前代码的一个问题是我遍历阅读器对象,直到找到相关的 ID,此时必须有一种更简单的方法来搜索阅读器对象中的给定 ID...