Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python I';I’我想搜索一个文件,从另一个列表中找到匹配的术语,然后标记包含这些术语的行_Python_Csv - Fatal编程技术网

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