检查字符串以查看它是否包含子字符串

时间:2015-01-22 23:20:06

标签: python string python-3.x

def contains_bitly_url(tweet):
    if tweet.startswith('http://bit.ly/'):
        return True
    elif tweet.find(' http://bit.ly/'):
        return True
    else:
        return False

所以我使用contains.bitly_url(“hahahahahah”)调用此函数,它总是返回true。我通过代码可视化器运行它,它是“elif tweet.find('http://bit.ly/'):”由于某种原因返回true的部分。有谁能告诉我如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

当找不到子字符串时,

str.find返回-1,否则返回字符串的索引。所以,除非字符串以' http://bit.ly/' str.find开头,否则总是会返回一个非零值(真实)。所以,最好检查-1:

def contains_bitly_url(tweet):
    if tweet.startswith('http://bit.ly/'):
        return True
    elif tweet.find(' http://bit.ly/') != -1:
        return True
    else:
        return False

您可以将功能简化为:

def contains_bitly_url(tweet):
    return 'http://bit.ly/' in tweet

答案 1 :(得分:2)

tweet.find(' http://bit.ly/')始终为True,除非它返回0

def contains_bitly_url(tweet):
    return tweet.startswith('http://bit.ly/') or tweet.find(' http://bit.ly/') != -1 

因此请使用tweet.find(' http://bit.ly/') != -1

如果两个检查都是True

,那么如果条件为TrueFalse,我们也可以返回{或1}}

或者只是使用in来查看子串是False主字符串是否为@MattDMo建议:

in