不等列表行上的python循环
我有两个tex文件,其中包含不相等数量的行和列。现在我想将一个tex文件中的列表与另一个文件中的列表进行比较,如果它与另一个文件中的列表匹配,则打印相应的数字。例如,我的文件看起来像不等列表行上的python循环,python,Python,我有两个tex文件,其中包含不相等数量的行和列。现在我想将一个tex文件中的列表与另一个文件中的列表进行比较,如果它与另一个文件中的列表匹配,则打印相应的数字。例如,我的文件看起来像 test1.txt test2.txt XCJ2200, B XCJ1945, A, 0.1 XCJ2345, E XCJ2200, B, 0.2 XCJ2568, F XCJ2450, C, 0.3 .... XCJ2590, D, 0.4
test1.txt test2.txt
XCJ2200, B XCJ1945, A, 0.1
XCJ2345, E XCJ2200, B, 0.2
XCJ2568, F XCJ2450, C, 0.3
.... XCJ2590, D, 0.4
XCJ3000, E, 0.4
....
现在我想将test1.txt的第1列和第2列与test2.txt的第1列和第2列进行匹配。所以我想要最终的输出
XCJ2200 0.2
XCJ2345 0.4
XCJ2568
....
到目前为止,我已经编写了以下代码,但并没有给出我想要的答案:
reader1=csv.reader(open('test1.txt','rb'))
reader2=csv.reader(open('test2.txt','rb'))
col1=[];col2=[];Col1=[];Col2=[];Col3=[]
for row in reader1:
col1.append((row[0]))
col2.append((row[1]))
for row in reader2:
Col1.append((row[0]))
Col2.append((row[1]))
Col3.append((row[2]))
for i in range(len(col1)):
for j in range(len(Col1)):
if Col1[j]==col1[i] or Col2[j]==col1[i]:
print col1[i],Col3[j]
else:
print col1[i]
此代码以test2.txt第1列长度的倍数打印test1.txt第1列。我知道最后一个if和else条件有问题。可能最简单的方法之一是将test2.txt读入字典,您可以使用字典查找元组(行[0],行[1])。使用dict.get()可以指定默认值“”:
你能附上正在打印的代码吗?还是它的样本?此外,我不知道
Col2[j]==col1[I]
将如何返回true。我想你的意思是说你是对的。它是Col2[j]==Col2[i]。这段代码给了我XCJ2200 XCJ2200 0.2 XCJ2200 XCJ2200 XCJ2345 XCJ2345 XCJ2345 0.3 XCJ2345是的,这是我想要的。对不起,我忘了提到这段代码没有检查我的其他条件,即'Col2[j]==Col2[I]'。这应该是因为它正在检查元组(行[0],行[1])
是否相等,在你的代码中是Col1和Col2。那么解决方案应该是什么呢?是否还有其他选项需要查看?这应该检查Col1和Col2。建议您发布另一个问题,显示您的代码、结果和预期结果。
with open('test2.txt', 'rb') as f:
reader = csv.reader(f)
lookup = {(row[0], row[1]): row[2] for row in reader}
with open('test1.txt', 'rb') as f:
reader = csv.reader(f)
data = [(row[0], row[1]) for row in reader]
for d in data:
print d[0], lookup.get(d, "")