我有两个包含不等数量行和列的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
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条件中有一些错误。
答案 0 :(得分:2)
最容易做的事情之一可能是将test2.txt读入可用于查找元组的字典(row [0],row [1])。使用dict.get()可以指定默认值“”:
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, "")