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

2024-06-28 21:30:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为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

Tags: retxtseqfastqfilecompiler1counting
1条回答
网友
1楼 · 发布于 2024-06-28 21:30:34

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

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

相关问题 更多 >