我是python的新手,我正在尝试不同的方法来完成相同的任务,现在我正试图弄清楚如何使用for loop
和{{}获取字符串中的子字符串{1}}。我很快发现使用while loop
完成这项任务非常简单。例如,如果我有一个字符串:“ABCDEFGHIJKLMNOP”,我想找到“CDE”是否存在然后打印出“CDE”+字符串的其余部分我将如何使用循环?现在我正在使用:
regex
返回每个索引和字符,我觉得这是一个开始,但我不知道该怎么做。我也知道有很多函数可以通过以下方式来查找子字符串:myString。(Function)但是我仍然想知道是否可以使用循环来执行此操作。
答案 0 :(得分:5)
s = 'ABCDEFGHIJKLMNOP'
targets = 'CDE','XYZ','JKL'
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
答案 1 :(得分:3)
这是一个简洁的方法:
s = "ABCDEFGHIJKLMNOP"
if "CDE" in s:
print s[s.find("CDE")+len("CDE"):]
else:
print s
打印:
FGHIJKLMNOP
这里需要注意的是,如果找不到子字符串,将返回原始字符串。
为什么这样?这样做可以检查是否找到了原始字符串。因此,这可以概念化为一个简单的函数(警告:为简洁起见,不执行类型检查 - 由读者根据需要实施它们):
def remainder(string, substring):
if substring in string:
return string[string.find(substring)+len(substring):]
else:
return string
答案 2 :(得分:0)
使用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