【发布时间】:2014-07-25 17:10:28
【问题描述】:
我正在尝试比较两个文件中的列以查看值是否匹配,如果匹配,我想将该行的数据合并/连接在一起。我的问题是,当分别从两个文件中逐行读取时,我无法让 python 一起遍历文件并寻找匹配项。相反,它将正确遍历一个文件并多次遍历第二个文件中的同一行...
我过去遇到过这个问题,但仍然没有真正找到解决方法。我知道缩进是一个问题,因为我使用“for line in a, for line in b”弄乱了循环,所以我认为我在下面尝试的方法会起作用,但它没有。我四处寻找解决方案,但似乎没有人使用相同的方法,所以我想知道我是否完全偏离了如何做到这一点?任何人都可以解释什么是更好的方法,以及我的方法是否有效,如果没有,为什么不呢?谢谢,非常感谢!
这些是我的两个文件的格式,基本上我想比较两个文件中的列文件名,如果它们匹配,我想将行合并在一起。
file1:
cluster_id hypothesis_id filename M1_name_offset Orientation
1 71133076 unique_name_1.png esc_sox2_Sox1_80_4 forward
1 50099120 unique_name_4.png hb_cebpb_ETS1_139_7 forward
1 91895576 unique_name_11.png he_tal1_at_AC_acptr_258_11 forward
file2:
Name Cluster_No Pattern filename
esc_sox2_Sox1_80 Cluster1 AP1(1N)ETS unique_name_4.png
hb_cebpb_ETS1_139 Cluster1 CREB(1N)ETS unique_name_11.png
he_tal1_at_AC_acptr_258 Cluster2 ETS(-1N)ZIC unique_name_3.png
我尝试过的:
for aline in file1:
motif1 = aline.split()[2]
for bline in file2:
motif2 = bline.split()[-1]
if motif1 = motif2:
print "match", aline, bline
我也试过了:
for aline in file1:
motif1 = aline.split()[2]
for bline in file2:
motif2 = bline.split()[-1]
if motif1 = motif2:
print "match", aline, bline
我也尝试过使用字符串格式,但这并没有什么不同。第一种方法错误地遍历 file2,第二种方法没有给我任何输出。我已经玩了很多次并尝试了各种缩进和额外的位,但我什至不知道如何尝试修复它!请帮帮我:(
【问题讨论】:
标签: python if-statement iteration string-matching readlines