python pattern count在复制源中查找“隐藏消息”

时间:2014-11-02 19:21:17

标签: python bioinformatics biopython

该问题要求在复制源中找到“隐藏的消息”。

Input: A string Text (representing the replication origin of a genome).

Output: A hidden message in Text.

转换为计算语言,

Input: Strings Text and Pattern.

Output: Count(Text, Pattern).

例如,

Count(ACAACTATGCATACTATCGGGAACTATCCT, ACTAT) = 3. 

理论上,我们应该考虑文本中Pattern的重叠发生吗?因此,一种方法是从第一个元素屏幕到我们正在寻找的模式的文本长度?

这是我提出的伪代码,

def PatternCount(Text, Pattern):
    count = 0
    for i = 0 to len(Text)-len(Pattern):
        if Text(i, len(Pattern)) = Pattern:
            count = count + 1
    return count

有什么建议吗?我是python的新手。提前致谢。

3 个答案:

答案 0 :(得分:1)

这就是我提出的:

def pattern_count(text, pattern):
    count = 0
    for i in range(0, len(text) - len(pattern) + 1):
        if text[i : len(pattern) + i] == pattern:
            count += 1
    return count

我们正在使用字符串切片(text[i : len(pattern) + i])来检查子字符串是否与模式匹配。

输入:text = "abc123!@#654abcabc"pattern = "abc" 输出:3

答案 1 :(得分:0)

import re
print len(re.findall("abc", "abc123!@#654abcabc"))

答案 2 :(得分:0)

我认为更“pythonic”的解决方案是使用列表推导。

def pattern_count(text, pattern):
    return len([x for x in range(len(text) - len(pattern)+1) if pattern in text[x:len(pattern)+x]])