簡體   English   中英

python - 如何在python中使用findall函數和re捕獲一系列字母?

[英]How do I capture a series of letters using the findall function with re in python?

我目前正在嘗試使用 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)

我認為您可以在不使用正則表達式的情況下解析氨基酸。 也許可以使用以下內容:

rspace = line.rindex(' ')
seq = line[rspace+1:]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM