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

时间:2018-08-01 19:29:08

标签: python string

假设我有以下列表>>> s = """User Input: "Hello"...................<1sec> User Input: "Hi!".....................<2sec> User Input: "How's it going"..........<1sec>""" >>> for line in s.splitlines(): try: print(line.split('"')[1]) except IndexError: pass Hello Hi! How's it going 和字符串['house', 'John', 'garden']。即使没有空格,Python中也有一种方法可以检查列表中的任何单词是否是字符串的一部分?最终的目标是要有一个函数,该函数返回单词(它们是字符串的一部分),并且可能描述单词在字符串中的何处。像这样:

'MynameisJohn'

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

我在StackOverflow上发现了一个question,它可以解决相同的问题,但是由于我有一个具体的列表来比较字符串,因此我不应该遇到相同的问题,对吗?

2 个答案:

答案 0 :(得分:2)

一个IDLE示例:

>>> 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]是列表理解。

对于名为item的列表中的每个find,它都会检查if item in s。如果Trueitem中的任何子字符串,它将返回s。如果为True,则该item将在results列表中。

答案 1 :(得分:1)

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

function()接受列表和字符串,并产生与单词在字符串中的位置匹配的单词:

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