我有两个大文件。我想分别在file1和file2的第1列和第2列中找到公共名称。下面的脚本就是这样做的。问题:我还想在输出中打印file1中相应的数据,但它不起作用。如何修复? 文件1.txt
GRMZM5G888627_P01 GO:0003674 molecular_function
GRMZM5G888620_P01 GO:0008150 biological_process
GRMZM5G888625_P03 GO:0008152 metabolic process
文件2.txt
contig1 GRMZM5G888627_P01
contig2 AT2G41790.1
contig3 GRMZM5G888625_P03
期望输出
contig1 GRMZM5G888627_P01 GO:0003674 molecular_function
contig3 GRMZM5G888625_P03 GO:0008152 metabolic process
剧本
f1=open('file1.txt','r')
f2=open('file2.txt','r')
output = open('result.txt','w')
dictA= dict()
for line1 in f1:
listA = line1.rstrip('\n').split('\t')
dictA[listA[0]] = listA
for line1 in f2:
new_list=line1.rstrip('\n').split('\t')
query=new_list[0]
subject=new_list[1]
new_list.append(query)
new_list.append(subject)
if subject in dictA:
output.writelines(query+'\t'+subject+'\t'+str(listA[1])+str(listA[2])+'\n')
output.close()
试试这个
使用sets
内部
listA不会被映射到相关的f2行。你把它们储存在dictA里了。你知道吗
一旦测试了主题是否在dictA中,就需要检索正确的listA
我不明白你为什么在这里加上
new_list
:在处理第一行时,您读入:
变成
new_list
,给你本质上:然后将
query
和subject
设置为列表中的两项。然后把它们加回去,给你:你从来没用过。您应该能够:
而且你只写了一行,所以
output.write
就可以了。而字符串加法通常是不好的,所以用格式代替。您的listA
存储了字符串,因此我取消了str()
调用。你知道吗相关问题 更多 >
编程相关推荐