Python 使用函数查找字符串中k长度的重复子字符串
我刚开始使用这个函数,我正在尝试构建一个,找到一个重复的子字符串,长度至少为k,并将结果返回到包含dict的tuple中。 键需要是子字符串,值是重复的次数,然后将子字符串的长度添加到元组中 我刚刚开始,但我真的不知道如何继续,但这就是我试图做的:Python 使用函数查找字符串中k长度的重复子字符串,python,python-3.x,string,substring,Python,Python 3.x,String,Substring,我刚开始使用这个函数,我正在尝试构建一个,找到一个重复的子字符串,长度至少为k,并将结果返回到包含dict的tuple中。 键需要是子字符串,值是重复的次数,然后将子字符串的长度添加到元组中 我刚刚开始,但我真的不知道如何继续,但这就是我试图做的: def longest_repeat(string, K) longest = {} , if isinstance(K, int) and isinstance(string, str) for sub_str in
def longest_repeat(string, K)
longest = {} ,
if isinstance(K, int) and isinstance(string, str)
for sub_str in string:
if sub_str >= K:
longest[0][sub_seq] = DNA_seq_slic = []
a=0
b=k
for nuc in range(len(DNA_seq)-k+1):
DNA_seq_slic.append(DNA_seq[a:b])
a +=1
b +=1
import collections
for sub_seq in DNA_seq_slic:
repeated = [item for item, count in collections.Counter(DNA_seq_slic).items() if count > 1]
repeated_subseq_dict = dict(zip(repeated,[0 for x in range(0,len(repeated))]))
for key in repeated_subseq_dict:
repeated_subseq_dict[key] = DNA_seq_slic.count(key)
return(repeated_subseq_dict)
我很抱歉,如果它有点混乱,我没有真正的方向,我试图使用我建立的其他功能来解决这个问题,但它并没有真正起作用。如果需要,我可以进一步澄清。
输出应如下所示:
longest_repeated("ATAATACATAATA", 5)
output: longest = {ATAATA: 2} , 6
非常感谢您的帮助!谢谢 您可以尝试
re
模块:
import re
def longest_repeated(s, k):
m = re.findall(f"(.{{{k},}})(?=.*\\1)", s)
if m:
mx = max(m, key=len)
return {mx: s.count(mx)}, len(mx)
一些测试:
print(longest_repeated("ATAATACATAATA", 5))
({'ATAATA': 2}, 6)
print(longest_repeated("XXXXXATAATACATAATAXXXXX", 5))
({'ATAATA': 2}, 6)
你能编辑你的问题并把样本(小)输入和预期输出放在那里吗?longest_repeated(“atacatata”,5)output:longest={ataatata:2},6感谢你指定正则表达式(regex)就是为了这个目的而来的:谢谢,但我真的不知道如何使用re模块,但它工作得很好。你能解释一下吗-m=re.findall(f“({{{{{k},}})(?=.*\\1)”,s)并没有真正理解它的意思