我想创建一个函数来检查字符串中是否存在其他字符串.
但是,正在检查的子字符串可能会在主字符串中被其他字母中断.
例如:
a = 'abcde'
b = 'ace'
c = 'acb'
Run Code Online (Sandbox Code Playgroud)
有问题的函数返回的b是在a,但不是c.
我试过了set(a).交集(set(b))已经,我的问题是它返回c为a.
Ned*_*der 11
您可以将预期的序列转换为正则表达式:
import re
def sequence_in(s1, s2):
"""Does `s1` appear in sequence in `s2`?"""
pat = ".*".join(s1)
if re.search(pat, s2):
return True
return False
# or, more compactly:
def sequence_in(s1, s2):
"""Does `s1` appear in sequence in `s2`?"""
return bool(re.search(".*".join(s1), s2))
a = 'abcde'
b = 'ace'
c = 'acb'
assert sequence_in(b, a)
assert not sequence_in(c, a)
Run Code Online (Sandbox Code Playgroud)
"ace"变成了正则表达式"a.*c.*e",它按顺序找到这三个字符,可能有插入字符.
这样的事情怎么样......
def issubstr(substr, mystr, start_index=0):
try:
for letter in substr:
start_index = mystr.index(letter, start_index) + 1
return True
except: return False
Run Code Online (Sandbox Code Playgroud)
要么...
def issubstr(substr, mystr, start_index=0):
for letter in substr:
start_index = mystr.find(letter, start_index) + 1
if start_index == 0: return False
return True
Run Code Online (Sandbox Code Playgroud)