2015-10-15 51 views

回答

10

您可以使用str.find方法用一个简单的索引:

>>> s="have an egg please" 
>>> s[s.find('egg'):] 
'egg please' 

注意str.find将返回-1如果没有找到子字符串,并会返回你string.So的最后一个字符,如果你是不确定您的字符串总是包含子字符串,您最好在使用它之前检查str.find的值。

>>> def slicer(my_str,sub): 
... index=my_str.find(sub) 
... if index !=-1 : 
...   return my_str[index:] 
... else : 
...   raise Exception('Sub string not found!') 
... 
>>> 
>>> slicer(s,'egg') 
'egg please' 
>>> slicer(s,'apple') 
Sub string not found! 
+1

值得注意的 - 如果没有找到子字符串,'find'将返回'-1',从而将输出的最后一个字符主要字符串(例如上面的'e')。另一种选择是用'index'替换'find',它与'find'类似,但如果找不到子字符串则会引发'ValueError',然后相应地处理异常。 – DreadPirateShawn

+0

@DreadPirateShawn的确,更新了附加信息的答案。 tnx关注。 – Kasramvd

+1

不应该'返回'而不是打印它的错误信息? – TigerhawkT3

1

使用正则表达式来获取子字符串。

import re 
def slice(str, startWith): 
    m = re.search(r'%s.*' % startWith,str) # to match pattern starts with `startWith` 
    if not m: return ""#there is no proper pattern, m is None 
    else: return m.group(0) 
1

您可以使用str.join()str.partition()

''.join('have an egg please'.partition('egg')[1:]) 
-1
>>> s = "eggs are good" 
>>> word = "eggs" 
>>> if word in s: 
     print s.split(word)[1] 
are good 
+0

这不会打印分离器参数egg – FallenAngel