想象一长串字符:
“ AATTAATCTATATATTGAAATGGGGCCCCAATTTTCCCAAATC ....”
我定义了4个字符串:
"AAT"
"ATG"
"TTT"
"ATC"
我的任务是为长字符串中的每个字符串“ AAT”找到“终点”。我的终点是最后三个字符串“ ATG”,“ TTT”,“ ATC”,这意味着我需要找到起始位置“ AAT”到终点的索引,可以是“ ATG”,“ TTT” ”或“ ATC”。我被告知要前进3步,但我不确定该怎么做。
我试图做到这一点:
open1=open(<text>)
u=open1.read()
string1="AAT
while True:
p=u.find(string1,p)
p=p+1
mylist.append(p)
print mylist
,它将在我的文本文件中打印字符串“ ATG”的位置。我不确定如何从这里继续前进。我想我也可以找到其他字符串的位置,但是如何创建一个从“ ATG”开始并一直持续到遇到端点之一的函数?
希望这是可以理解的
最佳答案
您可以使用正则表达式执行此操作:
>>> import re
>>> s = "AATTAATCTATATATTGAAATGGGGCCCCAATTTTCCCAAATC ...."
>>> [(m.start(), m.end()) for m in re.finditer('AAT.*?(?:ATG|TTT|ATC)', s)]
[(0, 8), (18, 34)]
re.finditer搜索一个正则表达式的多个不重叠的匹配项,并为每个匹配项返回一个MatchObject。 match对象的start()和end()方法给出了匹配字符串的开始和结束索引。
正则表达式将搜索AAT,然后搜索直到并包括首次出现的ATG,TTT或ATC的所有内容。
如果在程序运行之前不知道开始和结束字符串,则可能需要动态构造正则表达式-这非常简单:
start = "AAT"
end = ["ATG", "TTT", "ATC"]
regex = "%s.*?(?:%s)" % (start, '|'.join(end))
关于python - 作法:从一串到一串长串中的另一串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7575779/