Python 3.x 在混乱的字符串中查找子字符串

Python 3.x 在混乱的字符串中查找子字符串,python-3.x,string,list,dictionary,Python 3.x,String,List,Dictionary,我正在编写一个脚本-includeWord1,word2-它将两个字符串作为参数,并查找word1是否包含在word2中。Word2是一堆字母。它应该返回布尔值。同样,字母的重复是允许的,我只检查字母是否以相同的顺序包含在两个单词中 >>>includes('queen', 'qwertyuytresdftyuiokn') True “女王”,“女王” 我试着将每个单词转换成列表,以便更容易处理每个元素。我的代码是: def includes(w1, w2): w1

我正在编写一个脚本-includeWord1,word2-它将两个字符串作为参数,并查找word1是否包含在word2中。Word2是一堆字母。它应该返回布尔值。同样,字母的重复是允许的,我只检查字母是否以相同的顺序包含在两个单词中

>>>includes('queen', 'qwertyuytresdftyuiokn')
True
“女王”,“女王”

我试着将每个单词转换成列表,以便更容易处理每个元素。我的代码是:

def includes(w1, w2):
    w1 = list(w1)
    w2 = list(w2)
    result = False
    for i in w1:
        if i in w2:
            result = True
        else:
            result = False
    return result

但问题是,我还需要检查word1的字母在word2中的顺序是否相同,而我的代码无法控制这一点。我找不到一种方法来实现这个列表。就像我不能处理字符串一样,我想我需要使用另一种数据结构,比如dictionary,但我对它们了解不多

如果不只是检查子字符串:

def include(a, b):
    a = "".join(set(a)) # removes duplicates
    if len(a) == 1:
        if a in b:
            return True
        else:
            return False
    else:
        try: 
            pos = b.index(a[0])
            return include(a[1:], b[pos:])
        except:
            return False

print(include('queen', 'qwertyuytresdftyuiokn'))
#True

我希望我了解你的目标是什么。 Python不是我的东西,但我想我把它变成了Python:

def是子序列模式,要使用的项目: items_to_use=x代表items_to_use中的x 在itertools.groupbypattern中的项目_到_用于x,u中,为y返回allanyx==y 说明:

以这样的方式传输模式,即丢弃构成重复项 所有项目形成分组模式必须满足条件 只要与当前项不匹配,any将使用生成器项。请注意,项_到_的定义不能在最终表达式之外,所以每次验证模式中的下一项时,都会保持该项的进度。
您的代码几乎总是有效的,但问题是当第一个单词在一行中有相同的字母时,它不会返回true。即使在word1中重复的字母在word2中只找到一次,它也应该返回true。已修复,我错过了角格。非常感谢。你能解释一下你是怎么修好的吗?我可以理解你以前的代码,但不能理解这个。