在python中查找子字符串
我是python新手,我正在尝试不同的方法来完成相同的任务,现在我正在尝试找出如何使用在python中查找子字符串,python,string,loops,Python,String,Loops,我是python新手,我正在尝试不同的方法来完成相同的任务,现在我正在尝试找出如何使用for循环和while循环从字符串中获取子字符串。我很快发现,使用regex完成这项任务非常简单。例如,如果我有一个字符串:“ABCDEFGHIJKLMNOP”,我想找出“CDE”是否存在,然后打印出“CDE”+字符串的其余部分,我将如何使用循环?现在我正在使用: for i, c in enumerate(myString): 它返回每个索引和字符,我觉得这是一个开始,但我不知道之后该做什么。我还知道有很多
for循环
和while循环
从字符串中获取子字符串。我很快发现,使用regex
完成这项任务非常简单。例如,如果我有一个字符串:“ABCDEFGHIJKLMNOP”,我想找出“CDE”是否存在,然后打印出“CDE”+字符串的其余部分,我将如何使用循环?现在我正在使用:
for i, c in enumerate(myString):
它返回每个索引和字符,我觉得这是一个开始,但我不知道之后该做什么。我还知道有很多内置函数可以通过doing:myString.(Function)查找子字符串,但我仍然想知道是否可以使用循环来查找子字符串 这里有一个简单的方法:
s = "ABCDEFGHIJKLMNOP"
if "CDE" in s:
print s[s.find("CDE")+len("CDE"):]
else:
print s
印刷品:
FGHIJKLMNOP
这里的警告当然是,如果未找到子字符串,将返回原始字符串。
为什么要这样做?这样做可以检查是否找到原始字符串。因此,可以将其概念化为一个简单的函数(警告:为简洁起见,不强制执行类型检查-根据需要由读者实现):
鉴于:
带循环:
肾盂道:
输出(两种情况下):
使用for循环获取字符串的其余部分:
n = len(substr)
rest = next((s[i+n:] for i in range(len(s) - n + 1) if s[i:i+n] == substr),
None) # return None if substr not in s
这相当于:
_, sep, rest = s.partition(substr)
if substr and not sep: # substr not in s
rest = None
for t in targets:
for i in range(len(s) - len(t) + 1):
for j in range(len(t)):
if s[i + j] != t[j]:
break
else:
print(s[i:])
break
else:
print(t,'does not exist')
for t in targets:
i = s.find(t)
if i != -1:
print(s[i:])
else:
print(t,'does not exist')
CDEFGHIJKLMNOP
XYZ does not exist
JKLMNOP
n = len(substr)
rest = next((s[i+n:] for i in range(len(s) - n + 1) if s[i:i+n] == substr),
None) # return None if substr not in s
_, sep, rest = s.partition(substr)
if substr and not sep: # substr not in s
rest = None