我试图在FASTA格式的DNA序列中寻找多个特定序列,然后将它们打印出来。为简单起见,我制作了一个简短的字符串序列来显示我的问题。
import re
seq = "QPPLSK"
find_in_seq = re.search(r"[^P](P|K|R|H|W)", seq)
print find_in_seq.string[find_in_seq.start():find_in_seq.end()]
当有2个匹配“QP”和“SK”时,我只得到一个匹配“QP”的输出。如何显示2场比赛而不是仅显示第一场比赛?
由于
答案 0 :(得分:0)
使用re.findall
并更改正则表达式,以便不再有捕获组 - [^P](?:P|K|R|H|W)
或[^P][PKRHW]
:
import re
seq = "QPPLSK"
find_in_seq = re.findall(r"[^P][PKRHW]", str(seq))
print(find_in_seq)
请参阅Python demo
请注意,如果您想匹配P
以外的任何字母,最好使用[A-OQ-Z]
。