在没有空格的字符串中查找子字符串

2024-10-02 14:18:28 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有下面的列表['house', 'John', 'garden']和一个字符串'MynameisJohn'。在Python中,有没有一种方法可以检查列表中的单词是否是字符串的一部分,即使没有空格?最终的目标是要有一个函数,它返回字符串的一部分的单词,也许还可以描述单词在字符串中的起始位置。所以像这样:

def function(list, string):
    returns [(word, position in the string)]

我尝试了一些方法,但基本上没有任何效果,因为我不知道如何处理丢失的空白。。。我能想到的唯一方法就是检查字符串中的任何一个序列是否对应于其中一个单词,问题是我不知道如何实现这样的东西,而且它似乎也不是很有效。在

我在StackOverflow上发现了一个question,它处理了类似的问题,但是由于我有一个具体的列表来比较字符串,我不应该遇到同样的问题,对吗?在


Tags: 方法函数字符串目标列表stringdeffunction
2条回答

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

function()接受list和string,并生成与该词在字符串中的位置匹配的单词:

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)

输出:

^{pr2}$

一个无聊的例子:

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

说明:

[item for item in find if item in s]是一个列表理解。在

对于名为find的列表中的每个item,它检查if item in s。如果items中的任何子字符串,则返回True。如果True,那么{}将在results列表中。在

相关问题 更多 >