如何在python中使用findall函数和re来捕获一系列字母?

2024-09-30 04:38:32 发布

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

我目前正在尝试使用re中的findall函数来捕获蛋白质的氨基酸序列。我很难让正则表达式的语法正常工作。下面是我正在努力解决的代码的简化部分:

import re
line=">sp|A0A385XJ53|INSA9_ECOLI Insertion element IS1 9 protein InsA OS=Escherichia coli (strain K12) OX=83333 GN=insA9 PE=3 SV=1 MASVSISCPSCSATDGVVRNGKSTAGHQRYLCSHCRKTWQLQFTYTASQPGTHQKIIDMA"
result=re.findall(r'SV=(\d{1})\s{1}[A-Z]*', line)
for item in result:
    print(item)

我希望它返回SV=1之后的字母序列,但是它返回“1”而不是“MASVSISC…”我不知道为什么。我觉得我的代码读起来是“SV后跟一个数字,一个空格,然后是一个未指定长度的大写字母序列”,我怎么才能让它返回氨基酸序列呢?你知道吗

我试过几种不同的方法。我想可能是我把“*”的位置搞混了,或者是不小心用它代替了“+”。但是,以下尝试我仍然得到“1”:

result=re.findall(r'SV=(\d{1})\s{1}[A-Z*]', line)
result=re.findall(r'SV=(\d{1})\s{1}[A-Z]+', line)
result=re.findall(r'SV=(\d{1})\s{1}[A-Z+]', line)

Tags: 函数代码importreline语法序列蛋白质

热门问题