我正在寻找一种在Python字符串中查找确切子字符串的方法。例如,给定子字符串"cat"
,该函数应为字符串True
返回"abcatdg"
,因为它按顺序包含子字符串的字母,但应为字符串{返回False
{1}}作为子字符串的字母顺序为 not 。我已经尝试过此代码,但似乎无法使其正常工作,我也不知道为什么:
"btacz"
如果有人可以指出我在哪里错了或者我在想什么,我将不胜感激!预先感谢!
答案 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!"))