Python 在不带空格的字符串中查找子字符串

Python 在不带空格的字符串中查找子字符串,python,string,Python,String,假设我有以下列表['house','John','garden']和一个字符串'MynameisJohn'。Python中是否有方法检查列表中的任何单词是否是字符串的一部分,即使没有空格?最终的目标是有一个函数,返回字符串中的单词,可能还有一些描述单词在字符串中的起始位置的内容。比如说: def function(list, string): returns [(word, position in the string)] 我尝试了一些方法,但基本上没有任何效果,因为我不知道如何处理丢

假设我有以下列表
['house','John','garden']
和一个字符串
'MynameisJohn'
。Python中是否有方法检查列表中的任何单词是否是字符串的一部分,即使没有空格?最终的目标是有一个函数,返回字符串中的单词,可能还有一些描述单词在字符串中的起始位置的内容。比如说:

def function(list, string):
    returns [(word, position in the string)]
我尝试了一些方法,但基本上没有任何效果,因为我不知道如何处理丢失的空白。。。我能想到的唯一方法是检查字符串中的任何序列是否与其中一个单词对应,问题是我不知道如何实现类似的东西,而且似乎效率不高

我在StackOverflow上找到了一个处理类似问题的列表,但是因为我有一个具体的列表来比较字符串,所以我不应该遇到同样的问题,对吗

一个空闲的例子:

>>> find = ['house', 'John', 'garden']
>>> s = 'MynameisJohn'
>>> results = [item for item in find if item in s]
>>> print( results )
[John]
说明:

[查找s中的if项中的项对应项]
是一个列表

对于名为
find
的列表中的每个
,它会检查
是否为s中的项
。如果
item
s
中的任何子字符串,则返回
True
。如果
True
,则该
项将出现在
结果
列表中。

一个空闲示例:

>>> find = ['house', 'John', 'garden']
>>> s = 'MynameisJohn'
>>> results = [item for item in find if item in s]
>>> print( results )
[John]
说明:

[查找s中的if项中的项对应项]
是一个列表


对于名为
find
的列表中的每个
,它会检查
是否为s中的项
。如果
item
s
中的任何子字符串,则返回
True
。如果
True
,则该
项将出现在
结果
列表中。

要查找某个字符串在其他字符串中的位置,可以使用
str.index()
方法

函数()
接受列表和字符串,并生成与该单词在字符串中的位置相匹配的单词:

def function(lst, s):
    for i in lst:
        if i not in s:
            continue
        yield i, s.index(i)


lst = ['house', 'John', 'garden']
s = 'MynameisJohn'

for word, position in function(lst, s):
    print(word, position)
输出:

John 8

要查找某些字符串在其他字符串中的位置,可以使用
str.index()
方法

函数()
接受列表和字符串,并生成与该单词在字符串中的位置相匹配的单词:

def function(lst, s):
    for i in lst:
        if i not in s:
            continue
        yield i, s.index(i)


lst = ['house', 'John', 'garden']
s = 'MynameisJohn'

for word, position in function(lst, s):
    print(word, position)
输出:

John 8

您是否希望字符串
hohouse thechimney!返回true(怎么用烟囱!)?一个解决办法是匹配单词的字母?例如,如果您试图在字符串中找到“John”,然后将字符串拆分为一个列表,并进行迭代,直到找到J,然后检查o、h和n。您希望字符串
hohouse thechimney的可能重复项返回true(怎么用烟囱!)?一个解决办法是匹配单词的字母?例如,如果您试图在字符串中找到“John”,然后将字符串拆分为一个列表,并迭代直到找到J,然后检查o、h和n……可能的重复项