脚本不会在 csv 中写入多行

Script will not write multiple lines in csv

我的脚本遍历一个 csv(模式)的每一行,并将这些值与另一个 csv(数据)的每一行进行比较。当它找到匹配时,它应该将数据文件中的整行写入一个新文件(输出)。截至目前,当我 运行 它时,它只会将第一个匹配项写入输出文件。

with open("C:/Users/user/Desktop/c/out.csv", "w", newline="") as write:
    wtr = csv.writer(write)
    with open("C:/Users/user/Desktop/c/schema.csv", "r") as schema:
        rdr = csv.reader(schema)
        with open("C:/Users/user/Desktop/c/data.csv","r") as data:
            dat = csv.reader(data)
            for r in rdr:
                for d in dat:
                    if(r[0] == d[16] and r[1] == d[20]):
                        wtr.writerow(d)

您想读取整个 data.csv 文件中的每一行 schema.csv,因此您需要将 open("...") as data 指令移动到 for r in rdr: 循环中:

with open("C:/Users/user/Desktop/c/out.csv", "w", newline="") as write:
    wtr = csv.writer(write)
    with open("C:/Users/user/Desktop/c/schema.csv", "r") as schema:
        rdr = csv.reader(schema)
        for r in rdr:
            with open("C:/Users/user/Desktop/c/data.csv","r") as data:
                dat = csv.reader(data)
                for d in dat:
                    if(r[0] == d[16] and r[1] == d[20]):
                        wtr.writerow(d)

编辑:

再解释一下,在您的代码中,您首先初始化了两个 rdrdat 迭代器。然后你开始遍历 rdr,对于它的第一个元素,你开始遍历 dat.

中的所有元素

完成此操作后,外循环将转到 rdr 的第二个元素,并再次开始循环 dat,现在为空。所以什么也没有发生,它一直在 rdr 上循环。