代码之家  ›  专栏  ›  技术社区  ›  MAPK

如何在python中匹配文本并生成制表符分隔的表?

  •  0
  • MAPK  · 技术社区  · 7 年前

    test.txt . 我想用这个文本文件做一个表格。我是python新手,如果有人能帮我解决这个问题,我会非常感激。

    测试.txt

    Counting********************File:  bbduk_trimmed_Ago2_SsHV2L_1_CATGGC_L003_R1_001.fastq
    Seq_132582_1: ATCCGAATTAGTGTAGGGGTTAACATAACTCT: 
    0
    Seq_483974_49238: TCCGAATTAGTGTAGGGGTTAACATAACTC: 
    73764
    Counting********************File:  bbduk_trimmed_Ago2_SsHV2L_2_CATTTT_L003_R1_001.fastq
    Seq_132582_1: ATCCGAATTAGTGTAGGGGTTAACATAACTCT: 
    0
    Seq_483974_49238: TCCGAATTAGTGTAGGGGTTAACATAACTC: 
    78640
    Counting********************File:  bbduk_trimmed_Ago2_VF_1_CAACTA_L003_R1_001.fastq
    Seq_132582_1: ATCCGAATTAGTGTAGGGGTTAACATAACTCT: 
    0
    Seq_483974_49238: TCCGAATTAGTGTAGGGGTTAACATAACTC: 
    26267
    

    我试过的代码:

    pattern1 = re.compile(r'bbduk_trimmed')
    pattern2 = re.compile(r'Seq_132582_1: ATCCGAATTAGTGTAGGGGTTAACATAACTCT')
    pattern3 = re.compile(r'Seq_483974_49238: TCCGAATTAGTGTAGGGGTTAACATAACTC:')
    
    l1 = []
    l2 = []
    l3 = []
    
    with open('test.txt') as f:
        for i in f:
            if pattern1.search(i):
                a = re.sub('\n','',i)
                l1.append(a)
            elif pattern2.search(i):
                a = re.sub('\n','',i)
                l2.append(a)
            elif pattern3.search(i):
                a = re.sub('Query:','',i)
                b = re.sub('\n','',a)
                l3.append(b)
    
    output = zip(l1,l2,l3)
    
    print (output)
    

    我想要的结果:

    FileName    Seq_132582_1    Seq_483974_49238
    bbduk_trimmed_Ago2_SsHV2L_1_CATGGC_L003_R1_001.fastq    0   73764
    bbduk_trimmed_Ago2_SsHV2L_2_CATTTT_L003_R1_001.fastq    0   78640
    bbduk_trimmed_Ago2_VF_1_CAACTA_L003_R1_001.fastq    0   26267
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Ashok KS    7 年前

    更新时间: 你可以把它当作一个单独的表达式来尝试。

    text = open("test.txt",'r').read()
    
    results = re.findall(r'(bbduk_trimmed.*.fastq)\nSeq_132582_1: ATCCGAATTAGTGTAGGGGTTAACATAACTCT: \n(\d)\nSeq_483974_49238: TCCGAATTAGTGTAGGGGTTAACATAACTC: \n(\d*)',text)
    

    这将产生以下输出 Output

    pd.DataFrame(results)
    

    enter image description here