说我有一个字符串,我想之前或某些字符被视为如何删除一切都在一个字符串,直到一个字符(S)被认为在Python
例如后删除该字符串的其余部分,我的所有字符串中都有“蛋”:
"have an egg please"
"my eggs are good"
我想:
"egg please"
"eggs are good"
,也是同样的问题,但我怎么能删除所有,但在文字前面的字符串?
说我有一个字符串,我想之前或某些字符被视为如何删除一切都在一个字符串,直到一个字符(S)被认为在Python
例如后删除该字符串的其余部分,我的所有字符串中都有“蛋”:
"have an egg please"
"my eggs are good"
我想:
"egg please"
"eggs are good"
,也是同样的问题,但我怎么能删除所有,但在文字前面的字符串?
您可以使用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!
使用正则表达式来获取子字符串。
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)
您可以使用str.join()
和str.partition()
:
''.join('have an egg please'.partition('egg')[1:])
>>> s = "eggs are good"
>>> word = "eggs"
>>> if word in s:
print s.split(word)[1]
are good
这不会打印分离器参数egg – FallenAngel
值得注意的 - 如果没有找到子字符串,'find'将返回'-1',从而将输出的最后一个字符主要字符串(例如上面的'e')。另一种选择是用'index'替换'find',它与'find'类似,但如果找不到子字符串则会引发'ValueError',然后相应地处理异常。 – DreadPirateShawn
@DreadPirateShawn的确,更新了附加信息的答案。 tnx关注。 – Kasramvd
不应该'返回'而不是打印它的错误信息? – TigerhawkT3