在Python中的字符串中查找确切的子字符串

时间:2018-11-09 18:08:34

标签: python

我正在寻找一种在Python字符串中查找确切子字符串的方法。例如,给定子字符串"cat",该函数应为字符串True返回"abcatdg",因为它按顺序包含子字符串的字母,但应为字符串{返回False {1}}作为子字符串的字母顺序为 not 。我已经尝试过此代码,但似乎无法使其正常工作,我也不知道为什么:

"btacz"

如果有人可以指出我在哪里错了或者我在想什么,我将不胜感激!预先感谢!

6 个答案:

答案 0 :(得分:1)

如果没有返回,请返回False(否则将返回None):

def is_subsequence(sub, string):
    if sub in string:
        return True #if sub is a subsequence of str otherwise False
    return False

甚至更好:

def is_subsequence(sub, string):
    return sub in string

答案 1 :(得分:0)

您所拥有的应该可以工作,但是False案例没有回报。您应该可以将其简化为:

def is_subsequence(sub, string):
    return sub in string:

答案 2 :(得分:0)

该代码有效。可能是缩进错误?:

def is_subsequence(sub, string):
    if sub in string:
        return True  # if sub is a subsequence of str otherwise False
    return False


print(is_subsequence('cat', 'abcatdg'))

尽管在条件无法验证的情况下会丢失以返回False。

答案 3 :(得分:0)

如果未找到子字符串,您的函数会忘记返回False

您想要的功能已经存在。它称为str.__contains__

>>> str.__contains__('abcatdg', 'cat')
>>> True
>>> str.__contains__('abctadg', 'cat')
>>> False

,当您使用in关键字时被称为。

>>> 'cat' in 'abcatdg'
>>> True
>>> 'cat' in 'abctadg'
>>> False

如果您想要自己的函数(可能带有相反的参数),则可以这样编写:

def is_subsequence(sub, string):
    return sub in string

答案 4 :(得分:0)

您可以使用Python内置的find函数:

def is_subsequence(sub, string):
    return string.find(sub) >= 0

请注意,如果找不到sub,它将返回第一次出现的sub或-1的索引,因此我将其与0进行比较以查看是否找到了它。

答案 5 :(得分:0)

修正缩进并为else添加False语句:

def is_subsequence(sub, string):
    if sub in string:
        return True
    else:
        return False

print(is_subsequence("bacon", "Makin bacon!"))
print(is_subsequence("turky", "Makin bacon!"))

结果:

True
False

如果您想走更短的路程,可以简单地返回sub in string的结果:

def is_subsequence(sub, string):
    return sub in string

print(is_subsequence("bacon", "Makin bacon!"))
print(is_subsequence("turky", "Makin bacon!"))