首页 > 解决方案 > 从 2 个 CSV 文件中写入每个组合

问题描述

我有 2 个 csv 文件,其中包含有关 PCR 引物的数据。第一个文件包含有关正向引物的数据,第二个文件是反向引物的数据。每个文件有 10 行和大约 20 列,当组合来自文件 1 和文件 2 的行时,我想在每个组合中取每一行并制作第三个 .csv。所以文件应该是 100 行和 40 列。所以文件应该看起来像这样的第 1 行:forward1,reverse1。第 2 行:正向 1,反向 2。第 3 行:正向 1,反向 3。.... 第 41 行:forward5,reverse1。一路向前10,反向10

这是我的代码:

with open(forwards) as f_csv:
    read_forward = csv.reader(f_csv)

    with open(reverses) as r_csv:
        read_reverse = csv.reader(r_csv)

        file_name = "Combinations Matrix.csv"
        f = open(file_name, 'w')

        for fwd in read_forward:
            for rev in read_reverse:               
                for f_value in fwd:
                    f.write(f_value + ',')                  
                for r_value in rev:
                  f.write(r_value + ',')              
                f.write('\n')
f.close()
print('done')

它第一次通过外循环完美地工作。也就是说,第一次通过“read_forward”循环。但我不明白为什么当它开始“read_forward”的第二个循环时,它不会像第一次那样写入组合。使用控制台的打印语句,我发现它仍在循环第一个文件的行,但似乎它没有再次执行内部 for 循环。有人可以帮我解决这个问题吗?

谢谢!

标签: pythoncsvfor-loopcombinations

解决方案


内部 CSV 阅读器在第一次外部迭代后耗尽。设置read_reverse为:

read_reverse = list(csv.reader(r_csv))

推荐阅读