【发布时间】:2012-02-28 03:19:59
【问题描述】:
我有两个 CSV 文件(三列),我需要比较它们并从其他匹配的文件(五列)中提取行。文件示例如下:
文件1:
ATGCGCGACAGT, ch3, 123546
ATGCATACAGGATAT, ch2, 5141561615
......等等大约 100 个条目
文件2:
ATGCGGCGACAGT,ch3, 123456,mi141515, AUCAGCUAUAUAU, UACGCAGAUAUAUA
ATCAGACGATTATGA, ch4, 4564764, mi653453, AUCAGCAAUUUUCG, AUACAGACAAAAA
....等大约 50000 个条目
我需要匹配这两个文件的第 1,2 列和第 3 列,使 file1 的所有三列都应与 file2 匹配。如果发生这种情况,则提取 4,5 和 6 列进行进一步处理。
我在想:
fhout=csv.writer(open('parsed_out', 'w'), delimiter=',')
for i in file1:
a=[0]
b=[1]
c=[2]
for x in file2:
d=[0]
e=[1]
f=[2]
g=[3]
h=[4]
i=[5]
if a==d and b==e and c==f:
fhout.writerow([g]+[h]+[i])
else:
pass
但有人告诉我,我可以使用散列或其他更好的方法,而不是为 file1 中的 10,000 个或更多条目编写如此大的循环
请建议我更好的方法来实现这一点。文件 1 和文件 2 都是从更复杂的文件中解析出来的。
【问题讨论】:
-
您可以尝试将数据加载到一些 sqlite 表中,然后将它们加入您想要的列中。