gpt4 book ai didi

python - 如何: From one string to another in a long list of strings

转载 作者:太空宇宙 更新时间:2023-11-03 19:27:26 25 4
gpt4 key购买 nike

想象一长串字符:“AATTAATCTATATATTGAAATGGGGCCCCAATTTTCCCAAATC ....”

我定义了4个字符串:

"AAT"

"ATG"
"TTT"
"ATC"

我的任务是在长字符串中找到每个字符串“AAT”的“终点”。我的终点是最后三个字符串“ATG”、“TTT”、“ATC”,这意味着我需要找到起始位置“AAT”到结束位置的索引,可以是“ATG”、“TTT” ”或“空中交通管制”。我被告知要以 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。匹配对象的 start() 和 end() 方法给出匹配字符串的开始和结束索引。

正则表达式搜索 AAT,后跟任何内容,包括第一次出现的 ATG、TTT 或 ATC。

如果您在程序运行之前不知道开始和结束字符串,则可能需要动态构造正则表达式 - 这非常简单:

start = "AAT"
end = ["ATG", "TTT", "ATC"]
regex = "%s.*?(?:%s)" % (start, '|'.join(end))

关于python - 如何: From one string to another in a long list of strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7575779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com