Python 3.x 在混乱的字符串中查找子字符串
我正在编写一个脚本-includeWord1,word2-它将两个字符串作为参数,并查找word1是否包含在word2中。Word2是一堆字母。它应该返回布尔值。同样,字母的重复是允许的,我只检查字母是否以相同的顺序包含在两个单词中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
>>>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。已修复,我错过了角格。非常感谢。你能解释一下你是怎么修好的吗?我可以理解你以前的代码,但不能理解这个。