在一系列字符中查找主题

时间:2017-02-03 13:11:53

标签: python regex

我还有一个字典,其中的键是id,值是长序列,不仅包含K和M,还包含一些对我来说不重要的字符。

li = {id1: "KKMKMKMKJASGKKKMOOGBMMMMMMMMMMMMMMMMMM",
 id2:"MMKFJDFKFGKJKMKMKMKMKMJKJHFKMKMKM"}

我想找到" KMKMKM"的主题。长度至少为6.它可以是偶数或奇数,只等于或大于6.它也应该在具有相同键的字典中,但不是整个序列,值必须是主题列表。如下例所示。

results = {id1: ["KMKMKMK"], id2: ["KMKMKMKMKM", "KMKMKM"] }

我已经写了这段代码,但没有回复感兴趣的图案。

{k: re.findall(r'(?:KM){6,1000}', v) for k, v in li.items()}

2 个答案:

答案 0 :(得分:3)

这个完成工作:

 String id="cluster";
    int iterator=0;
     //put itout of your loop
//open loop here
    <div class="checkbox" id="<%=id.concat(iterator) %>_div">
   iterator++;
// close loop here

<强>解释

((?:KM){3,}K?)

在行动中:

(             : group 1
  (?:KM){3,}  : non capture group, 3 or more times KM
  K?          : optional K
)             : end group 1

<强>输出:

import re

li = {'id1': "KKMKMKMKJASGKKKMOOGBMMMMMMMMMMMMMMMMMM",
 'id2':"MMKFJDFKFGKJKMKMKMKMKMJKJHFKMKMKM"}

res = {k: re.findall(r'((?:KM){3,}K?)', v) for k, v in li.items()}
print(res)

答案 1 :(得分:0)

这就是你要找的东西:

import re

stringA = "KKMKMKMKJASGKKKMOOGBMMMMMMMMMMMMMMMMMM";
motifs = "KMKMKM";

m = re.search(motifs, stringA)
if m:
    print(motifs);

回复您的评论如下:

stringA = "KKMKMKMKJASGKKKMOOGBMMMMMMMMMMMMMMMMMM";
motifs = "KMKMKM";
i = 0;

while True:
    seq = stringA[i:]
    i = i + 1;
    if (seq.startswith(motifs)):
        print(seq);
    if (len(stringA) == i):
        break;