如何重写条件语句以不打印-1?

时间:2016-07-19 20:06:44

标签: python

我的if语句看起来很奇怪,但我想不出如何防止打印-1值:

set xlabel 'xlabel' offset 0, -0.5
set ylabel 'ylabel' offset 0.5, 0

这是我的输出:

### script counts the number of times that a key string appears in target string 

from string import *

def countSubStringMatch(target,key):
    value = target.find(key, 0)
    print value

    while value > -1:
        value = value + 1
        value = target.find(key, value)

        if value != -1:
            print value
        else:
            break

countSubStringMatch("atgacatgcacaagtatgcat","atg")

3 个答案:

答案 0 :(得分:2)

您可以删除初始打印语句,而是在循环体的开头而不是在结尾处打印值。

def countSubStringMatch(target,key):
    value = target.find(key, 0)

    while value > -1:
        print value

        value = value + 1
        value = target.find(key, value)

顺便说一下,如果你只想要匹配的数量而不是每个匹配的开头的索引,你可以使用count

>>> count("atgacatgcacaagtatgcat","atg")
# 3

答案 1 :(得分:2)

请尽可能使用代码,其他人已经写过。基于Find all occurrences of a substring in Python

string = "atgacatgcacaagtatgcat"
print [i for i in range(len(string)) if string.startswith('atg', i)]

答案 2 :(得分:1)

def countSubStringMatch(target,key):
   res = set( [ data.find('atg',i) for i in range(len(data)) ] )
   res.remove(-1)
   print res

countSubStringMatch("atgacatgcacaagtatgcat","atg")

set([0, 5, 15])