Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何:在一长串字符串列表中从一个字符串到另一个字符串_Python_String_List - Fatal编程技术网

Python 如何:在一长串字符串列表中从一个字符串到另一个字符串

Python 如何:在一长串字符串列表中从一个字符串到另一个字符串,python,string,list,Python,String,List,想象一长串字符: “aattaattctatattgaaattggccccaattccaaatc…” 我定义了4个字符串: "AAT" "ATG" "TTT" "ATC" 我的任务是为长字符串中的每个字符串“AAT”找到“端点”。我的终点是最后三个字符串“ATG”、“TTT”、“ATC”,这意味着我需要找到从起始位置“AAT”到结束位置的索引,可以是“ATG”、“TTT”或“ATC”。我被告知要按第三步前进,但我不知道怎么做 我尝试过这样做: open1=open(<text>)

想象一长串字符: “aattaattctatattgaaattggccccaattccaaatc…”

我定义了4个字符串:

"AAT"

"ATG"
"TTT"
"ATC"
我的任务是为长字符串中的每个字符串“AAT”找到“端点”。我的终点是最后三个字符串“ATG”、“TTT”、“ATC”,这意味着我需要找到从起始位置“AAT”到结束位置的索引,可以是“ATG”、“TTT”或“ATC”。我被告知要按第三步前进,但我不知道怎么做

我尝试过这样做:

open1=open(<text>)
u=open1.read()
string1="AAT


while True:
 p=u.find(string1,p)
 p=p+1
 mylist.append(p)

print mylist
open1=open()
u=open1.read()
string1=“AAT
尽管如此:
p=u.find(string1,p)
p=p+1
mylist.append(p)
打印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))

可以使用正则表达式执行此操作:

>>> 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 2.7。哦,我忘了。这是python 2.7。