在python中查找子字符串

在python中查找子字符串,python,string,loops,Python,String,Loops,我是python新手,我正在尝试不同的方法来完成相同的任务,现在我正在尝试找出如何使用for循环和while循环从字符串中获取子字符串。我很快发现,使用regex完成这项任务非常简单。例如,如果我有一个字符串:“ABCDEFGHIJKLMNOP”,我想找出“CDE”是否存在,然后打印出“CDE”+字符串的其余部分,我将如何使用循环?现在我正在使用: for i, c in enumerate(myString): 它返回每个索引和字符,我觉得这是一个开始,但我不知道之后该做什么。我还知道有很多

我是python新手,我正在尝试不同的方法来完成相同的任务,现在我正在尝试找出如何使用
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