gpt4 book ai didi

python - 从具有定义起点和终点的字符串中提取子字符串

转载 作者:行者123 更新时间:2023-12-04 07:41:06 25 4
gpt4 key购买 nike

我有一个或多或少看起来像这样的三个序列的列表(res):

res = [
'NVAKMFPQRKFT<STOP>TVQTLMRNGTLLERG<STOP>CCEVSP',

'QKRMDCNASV<STOP>TVTVQTLMQTL<STOP>TNTPKGG<STOP>',

'MEKGYADAE<STOP>RKTF<STOP>MTVRAGCCGI<STOP>MK'
]

我想将这些序列中的每一个拆分为以“M”开头并以(但不包括)< STOP > 结尾的子字符串。这些子串在这里被定义为外显子。我不希望我的外显子重叠(实际序列比这里的样本长得多)。我希望在 M 和 < STOP > 之间至少有两个字符。
   exon = list()
for seq in res:
string = str(res)
result = re.search("M(.*?)<STOP>", string)
if result:
found = list()
found = result.group()
exon.append(found)
print exon
我想得到一个这样的嵌套列表:
exon = [

"['MFPQRKFT', 'MRNGTLLERG']",
"['MDCNASV', 'MQTL']",
"['MEKGYADAE', 'MTVRAGCCGI']"
]
但是现在我只得到一个包含几个外显子的列表,并且每个列表的末尾都有

最佳答案

您可以使用带有捕获组的模式并 re.findall 将返回捕获组的值

(M.{2,}?)<STOP>
  • (捕获 第 1 组 (这将由 re.findall 返回)
  • M.{2,}?匹配 M和 2 次或更多次任何非贪婪的字符

  • )关闭群 1
  • <STOP>字面匹配

  • regex demo和一个 Python demo
    如果您只想匹配大写字符( . 匹配除换行符以外的任何字符),您可以使用
    (M[A-Z]{2,})<STOP>
    Regex demo
    例如
    import re

    exon = list()
    res = [
    'NVAKMFPQRKFT<STOP>TVQTLMRNGTLLERG<STOP>CCEVSP',
    'QKRMDCNASV<STOP>TVTVQTLMQTL<STOP>TNTPKGG<STOP>',
    'MEKGYADAE<STOP>RKTF<STOP>MTVRAGCCGI<STOP>MK'
    ]

    for seq in res:
    exon.append(re.findall(r"(M.{2,}?)<STOP>", seq))

    print(exon)
    输出
    [
    ['MFPQRKFT', 'MRNGTLLERG'],
    ['MDCNASV', 'MQTL'],
    ['MEKGYADAE', 'MTVRAGCCGI']
    ]

    关于python - 从具有定义起点和终点的字符串中提取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67460222/

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