我希望你能帮我指出正确的方向,因为我对编程特别是Python非常陌生。我试图在更大的字符串中找到某些子字符串的最大重复次数。例如,'AGATC'
在更长的字符串中重复了多少次(它可能只在一个位置出现,但在另一个位置一行出现四次)
我一直在阅读关于regex的文章,并编写了下面的代码。它将成功地分别打印出每个图案的重复,但是,我需要知道它出现时的重复计数。我的代码的示例输出如下所示:
['AGATCAGATCAGATCAGATC', 'TATCTATCTATCTATCTATC', 'GAAA', 'GATA', 'AATG', 'GAAA', 'GAAA', 'GATA']
在这种情况下'AGATC'
出现四次,但'TATC'
重复五次,所以我需要将其作为一个整数。如果有人有什么想法可以推动我前进,我将不胜感激
这是我的全部代码:
import re
# Opens the textfile and stores it as a string
with open('STR.txt') as strfile:
for row in strfile:
STRs = row
# Defines patterns we are searching for in STR
pattern1 = (r'(?:AGATC)+')
pattern2 = (r'(?:TTTTTTCT)+')
pattern3 = (r'(?:AATG)+')
pattern4 = (r'(?:TCTAG)+')
pattern5 = (r'(?:GATA)+')
pattern6 = (r'(?:TATC)+')
pattern7 = (r'(?:GAAA)+')
pattern8 = (r'(?:TCTG)+')
# Recompiles all patterns into one single pattern
mainpattern = re.compile("(%s|%s|%s|%s|%s|%s|%s|%s)" % (pattern1, pattern2, pattern3, pattern4, pattern5, pattern6, pattern7, pattern8))
# Finds the pattern matches in STR
STR_match = re.findall(mainpattern, STRs)
print(STR_match)
如果我正确理解您的问题,您可以针对每个模式分别执行此操作,例如:
此匹配将返回所有连续匹配字符串的列表,如果按字母顺序排序,则最长的字符串将始终是最后一个字符串,因为它们重复该模式。然后,您可以计算该字符串中重复的模式数。
如果您只需要最长的重复,您可以计算这些数字的最大值,如图所示
相关问题 更多 >
编程相关推荐