gpt4 book ai didi

python - 使用正则表达式获取所需行的问题

转载 作者:太空宇宙 更新时间:2023-11-03 20:17:52 25 4
gpt4 key购买 nike

我是 python 正则表达式函数的新手。我有一个文件需要过滤氨基酸序列。以下是对该文件的快速浏览:

>nxp:NX_A0A0A6YYD4-1 \PName=T cell receptor beta variable 13 isoform Iso 1 \GName=TRBV13 \NcbiTaxId=9606 \TaxName=Homo Sapiens \Length=124 \SV=5 \EV=31 \PE=3 \ModResPsi=(52|MOD:00798|half cystine)(120|MOD:00798|half cystine) \ModRes=(106||N-linked (GlcNAc...) asparagine) \VariantSimple=(18|H)(27|V) \Processed=(1|31|PEFF:0001021|signal peptide)(32|124|PEFF:0001020|mature protein) MLSPDLPDSAWNTRLLCRVMLCLLGAGSVAAGVIQSPRHLIKEKRETATLKCYPIPRHDT VYWYQQGPGQDPQFLISFYEKMQSDKGSIPDRFSAQQFSDYHSELNMSSLELGDSALYFC ASSL

>nxp:NX_A0A1B0GV90-1 \PName=Cortexin domain containing 2 isoform Iso 1 \GName=CTXND2 \NcbiTaxId=9606 \TaxName=Homo Sapiens \Length=55 \SV=1 \EV=11 \PE=3 \VariantSimple=(13|N)(22|F)(29|T)(34|Q)(45|T) \Processed=(1|55|PEFF:0001020|mature protein) MEDSSLSSGVDVDKGFAIAFVVLLFLFLIVMIFRCAKLVKNPYKASSTTTEPSLS

我可以过滤掉所需点的端点和起点。正如您在我的代码中看到的,开头是\VarableSimple 之后的坐标,结尾应该是下一个 ">"字符。现在我找不到过滤 MLSPDLPD..... 序列的方法。有人可以给我一个主意吗?

with open('PATH/XYZ', 'r') as f:
data = f.read()

import regex

h = regex.compile("(.*)\n").match(data)
header = h.group(1)
start = regex.match(".+\\\VariantSimple=(\([^)]+\))*\s{0,1}", data)
start.captures(1)
end = regex.compile("(.)*\>").match(data)
end.captures(0)

最佳答案

\\VariantSimple=((?:\([^\)]+\))*)\\已处理=((?:\([^\)]+\))*) ([\s\S]*?)(?:\n*>|$)

此正则表达式将捕获您的氨基酸序列。关闭“已处理”数据字段后,它会捕获跨行的所有字符,直到遇到换行符后跟 > 字符或行尾。这应该适用于您的 python 代码。

Regex demo

示例代码如下所示;它将匹配尽可能多的氨基酸字符串,然后将它们打印出来。

import re

with open('data.txt', 'r') as fil:
data = fil.read()


rex = re.compile("\\\VariantSimple=(?:\([^\)]+\))* \\\Processed=(?:\([^\)]+\))* ([\s\S]*?)(?:\n*>|$)")
rex2 = re.compile("Variant")

out = re.findall(rex, data)

for mtch in out:
print(mtch + "\n")

输出:

MLSPDLPDSAWNTRLLCRVMLCLLGAGSVAAGVIQSPRHLIKEKRETATLKCYPIPRHDT VYWYQQGPGQDPQFLISFYEKMQSDKGSIPDRFSAQQFSDYHSELNMSSLELGDSALYFC ASSL

MEDSSLSSGVDVDKGFAIAFVVLLFLFLIVMIFRCAKLVKNPYKASSTTTEPSLS

Python demo

关于python - 使用正则表达式获取所需行的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58341825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com