Python 如何确定子字符串是否位于不同的字符串中

Python 如何确定子字符串是否位于不同的字符串中,python,string,Python,String,我有一个子字符串: substring = "please help me out" 我有另一个字符串: string = "please help me out so that I could solve this" 如何使用Python查找substring是否是string的子集?中的:字符串中的substring: >>> substring = "please help me out" >>> string = "please help me o

我有一个子字符串:

substring = "please help me out"
我有另一个字符串:

string = "please help me out so that I could solve this"

如何使用Python查找
substring
是否是
string
的子集?

中的
字符串中的substring

>>> substring = "please help me out"
>>> string = "please help me out so that I could solve this"
>>> substring in string
True

(顺便说一句-尽量不要给变量命名
string
,因为有一个同名的Python标准库。如果在大型项目中这样做,可能会让人感到困惑,因此避免这样的冲突是一个好习惯。)

如果要查找的不仅仅是真/假,最好使用re模块,比如:

import re
search="please help me out"
fullstring="please help me out so that I could solve this"
s = re.search(search,fullstring)
print(s.group())
s.group()
将返回字符串“请帮帮我”。

您也可以尝试find()方法。它确定字符串str是出现在字符串中,还是出现在字符串的子字符串中

str1 = "please help me out so that I could solve this"
str2 = "please help me out"

if (str1.find(str2)>=0):
  print("True")
else:
  print ("False")

人们在评论中提到了
string.find()
string.index()
,以及
string.indexOf()
,我在这里对他们进行了总结(根据:

首先,没有
string.indexOf()
方法。Deviljho发布的链接显示这是一个JavaScript函数


其次,
string.find()
string.index()
实际上返回子字符串的索引。唯一的区别是它们如何处理子字符串未找到的情况:
string.find()
返回
-1
,而
string.index()返回
引发了一个
ValueError

我想我会加上这个,以防你在一次技术面试中看到如何做到这一点,他们不希望你在
中使用Python的内置函数
,这很可怕,但确实发生了:

string = "Samantha"
word = "man"

def find_sub_string(word, string):
  len_word = len(word)  #returns 3

  for i in range(len(string)-1):
    if string[i: i + len_word] == word:
  return True

  else:
    return False

也可以使用这种方法

if substring in string:
    print(string + '\n Yes located at:'.format(string.find(substring)))

不使用find(),一个简单的方法是如上所述使用“in”


如果'str'中存在'substring',则if part将执行,否则其他部分将执行。

不仅会混淆,而且还会打断该点之后引用字符串的所有内容。关于正则表达式搜索的好提示。请注意。如果你想用正则表达式解决一些问题,你就要解决两个问题。天哪,python太强大了,我认为它需要一个函数来完成,但它是一个内置的O-oI,我只是在学习python之后才开始学习JS,为此你需要添加大量的if-else语句和其他东西。所以,我只是想提醒自己它是如何在Python中完成的,这个答案让我对自己说‘当然!’,我的意思是,在Python中,这样的事情非常琐碎,你永远不会考虑它们P@GamesBrainiac实际上,要在JS中实现同样的功能,只需
string.indexOf(substring)!=-1
,如果您再次查找,是的子字符串存在于字符串中,您如何查找字符串的位置,以及如果子字符串多次出现在字符串中会发生什么情况?@yoshiserry如果您希望在
字符串中查找子字符串的位置,那么您希望在给定字符串中使用查找子字符串“bob”。很好的示例,但是你的身份不正确。为了加快速度,我会检查
如果len(substring)>len(string)返回False
循环范围最好是
范围(len(string)-len(substring))
,因为在字符串的最后两个字母中找不到三个字母的单词。(节省了一些迭代)。
string = "Samantha"
word = "man"

def find_sub_string(word, string):
  len_word = len(word)  #returns 3

  for i in range(len(string)-1):
    if string[i: i + len_word] == word:
  return True

  else:
    return False
def find_substring():
    s = 'bobobnnnnbobmmmbosssbob'
    cnt = 0
    for i in range(len(s)):
        if s[i:i+3] == 'bob':
            cnt += 1
    print 'bob found: ' + str(cnt)
    return cnt

def main():
    print(find_substring())

main()
if substring in string:
    print(string + '\n Yes located at:'.format(string.find(substring)))