我把这些数据称为文本.txt. 下面还有我的代码。我想提取行值并用它生成一个表。我还想看看有没有更好的方法。谢谢
在测试.txt在
Counting********************File: bbduk_trimmed_Ago2_SsHV2L_1_CATGGC_L003_R1_001
Seq_132582_1: ATCCGAATTAGTGTAGGGGTTAACATAACTCT:
0
Seq_483974_49238: TCCGAATTAGTGTAGGGGTTAACATAACTC:
73764
Counting********************File: bbduk_trimmed_Ago2_SsHV2L_2_CATTTT_L003_R1_001
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
我想要的结果是:
^{pr2}$我试过的代码:
import sys
if sys.version_info[0] < 3:
raise Exception("Python 3 or a more recent version is required.")
import re
import pandas as pd
text = open("text.txt",'r').read()
print(type(text))
results = re.findall(r'(bbduk_trimmed.*.fastq)\nSeq_132582_1: ATCCGAATTAGTGTAGGGGTTAACATAACTCT: \n(\d)\nSeq_483974_49238: TCCGAATTAGTGTAGGGGTTAACATAACTC: \n(\d*)',text)
df=pd.DataFrame(results)
# df.columns=['FileName','Seq_132582_1','Seq_483974_49238'] #This doesn't work
print(df)
只需将regex替换为以下代码行:
说明:
[*]+
-匹配一个或多个*
字符[ ]*
-匹配一个或多个(space) character
([\w.]+)
-匹配文件名并计算为第一个paranthasis[ \n]*
-匹配零个或多个空格或换行符[ :\w]+
-匹配以Seq
开头的整行在正则表达式中获取序列的核心逻辑如下:
([\w.]+)[ \n]*[ \w]+:[ :\w]+[\n]*(\w+)
([\w.]+)
匹配文件名之后,我们使用[ \n]*
匹配空格和新行[ \w]+:[ :\w]+
,并将其作为([ \w])+:[ :\w]+
在偏执症可以匹配的地方,你可以提取序列,它可以是Seq_132582_1
或{[ :\w]+[\n]*
替换它,并匹配整行并匹配使用(\w+)
在下一行中需要的数据另一种更简单的方法是提取数据,如下图所示,以在不使用
^{pr2}$re
模块的情况下准备结果:对于您的特定文本文件,可以如下进行解析:
相关问题 更多 >
编程相关推荐