就做个俗人 2021-12-07 12:01 采纳率: 80%
浏览 103
已结题

python 代码 目的:根据关键词提取前后行内容

  • 写回答

2条回答 默认 最新

  • 小康2022 Python领域新星创作者 2021-12-07 19:07
    关注

    【有帮助请采纳】

    inputfile = input('输入文件路径:')#此处输入绝对路径
    inlist = []
    with open(inputfile,'r') as file:
        file = file.readlines()
        for line in file:inlist.append(line)
    
    def func1():
        with open('out1.txt','w') as outfile1:
            with open('out3.txt','w') as outfile3:
                for lines in inlist:
                    if 'ACATGCGT' in lines:outfile1.write(lines)
                    if 'AGCCTTAG' in lines:outfile1.write(lines)
                    else:outfile3.write(lines)
    
    def func2(n=0):
        with open('out2.txt','w') as outfile2:
            while n < len(inlist):
                if inlist[n][0]=='@':
                    while 1:
                        outfile2.write(inlist[n].strip('@'))
                        n +=1
                        if n == len(inlist):break
                        if inlist[n][0]=='@':break
                n +=1
    
    func1()
    func2()
    

    【有帮助请采纳】

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    就做个俗人 2021-12-08 02:26

    img

    您好,根据您的代码我小改了一下,但是一直运行不出结果,可以麻烦看一下这是什么原因吗?您上面的代码是将两个关键词都写入了同一文件,我想达到的是不同的关键词写入不同的文件,其余不包含的写入另一个文件。

    1
    回复
    小康2022 回复 就做个俗人 2021-12-08 02:49

    你没改完整啊,还有下面的一个函数里也要改,不然那个outfile2就重复了,应该这样:

    inputfile = input('输入文件路径:')#此处输入绝对路径
    inlist = []
    with open(inputfile,'r') as file:
        file = file.readlines()
        for line in file:inlist.append(line)
    def func1():
        with open('out1.txt','w') as outfile1:
            with open('out2.txt','w') as outfile2:
                with open('out3.txt','w') as outfile3:
                    for lines in inlist:
                        if 'ACATGCGT' in lines:outfile1.write(lines)
                        if 'AGCCTTAG' in lines:outfile2.write(lines)
                        else:outfile3.write(lines)
    def func2(n=0):
        with open('out4.txt','w') as outfile4:
            while n < len(inlist):
                if inlist[n][0]=='@':
                    while 1:
                        outfile4.write(inlist[n].strip('@'))
                        n +=1
                        if n == len(inlist):break
                        if inlist[n][0]=='@':break
                n +=1
    func1()
    func2()
    

    1
    回复
    小康2022 回复 小康2022 2021-12-08 02:59

    我用的测试文本:

    img


    输出得到:

    img


    每一个文件的内容为:

    img

    img

    img

    img

    1
    回复
    展开全部5条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 12月15日
  • 已采纳回答 12月8日
  • 创建了问题 12月7日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部