Python I';I’我想搜索一个文件,从另一个列表中找到匹配的术语,然后标记包含这些术语的行
今天有点精神障碍,所以我需要一些帮助 我有一个显示基因对之间相互作用的大文件,看起来是这样的:Python I';I’我想搜索一个文件,从另一个列表中找到匹配的术语,然后标记包含这些术语的行,python,csv,Python,Csv,今天有点精神障碍,所以我需要一些帮助 我有一个显示基因对之间相互作用的大文件,看起来是这样的: GeneA GeneB 0.8475 GeneA GeneC 0.9865 GeneB GeneA 0.9865 GeneD GeneB 0.5174 等等 我还有另一个文件,列出了我感兴趣的一些基因,如: GeneD GeneC 基本上,我想要一个简短的脚本,它在第一个文件上迭代,查找第二个文件中的基因出现在行中的情况,然后简单地在该行中添加一个星号,这样我以后就
GeneA GeneB 0.8475
GeneA GeneC 0.9865
GeneB GeneA 0.9865
GeneD GeneB 0.5174
等等
我还有另一个文件,列出了我感兴趣的一些基因,如:
GeneD
GeneC
基本上,我想要一个简短的脚本,它在第一个文件上迭代,查找第二个文件中的基因出现在行中的情况,然后简单地在该行中添加一个星号,这样我以后就可以很容易地发现这些交互作用
为了完成我的示例,考虑到这两个文件,我想修改我的第一个文件,如下所示:
GeneA GeneB 0.8475
GeneA GeneC 0.9865 *
GeneB GeneA 0.9865
GeneD GeneB 0.5174 *
谢谢你的帮助:)
以下是python脚本:
genes=[]
with open('data1', 'r') as f:
genes=set(map(lambda line:line.strip(), f.readlines()))
with open('output', 'w') as f:
with open('data', 'r') as csvfile:
for i in map(lambda line:line.strip(), csvfile.readlines()):
print(i+"\t*" if set(i.split()[0:2]) & genes else i, file=f)
#print >>f, i+"\t*" if set(i.split()[0:2]) & genes else i #for Python 2.x
这里有一篇关于如何提问的有用文章:其中有一点建议你们应该做一些研究,并记录你们是如何试图解决你们遇到的问题的。你试过自己解决这个问题吗?如果是,你试过什么?如果没有,是什么阻止你这样做?本次讨论中还提供了许多关于良好做法的有用信息:
genes=[]
with open('data1', 'r') as f:
genes=set(map(lambda line:line.strip(), f.readlines()))
with open('output', 'w') as f:
with open('data', 'r') as csvfile:
for i in map(lambda line:line.strip(), csvfile.readlines()):
print(i+"\t*" if set(i.split()[0:2]) & genes else i, file=f)
#print >>f, i+"\t*" if set(i.split()[0:2]) & genes else i #for Python 2.x