为了账号安全,请及时绑定邮箱和手机立即绑定

查找两个子串之间的字符串

查找两个子串之间的字符串

MMTTMM 2019-08-15 16:09:11
查找两个子串之间的字符串如何在两个子串('123STRINGabc' -> 'STRING')之间找到一个字符串?我目前的方法是这样的:>>> start = 'asdf=5;'>>> end = '123jasd'>>> s = 'asdf=5;iwantthis123jasd'>>> print((s.split(start))[1].split(end)[0])iwantthis然而,这似乎是非常低效和非pythonic。做这样的事情有什么更好的方法?忘记提及:字符串可能无法以start和开头和结尾end。他们之前和之后可能会有更多的角色。
查看完整描述

3 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

s = "123123STRINGabcabc"def find_between( s, first, last ):
    try:
        start = s.index( first ) + len( first )
        end = s.index( last, start )
        return s[start:end]
    except ValueError:
        return ""def find_between_r( s, first, last ):
    try:
        start = s.rindex( first ) + len( first )
        end = s.rindex( last, start )
        return s[start:end]
    except ValueError:
        return ""print find_between( s, "123", "abc" )print find_between_r( s, "123", "abc" )

得到:

123STRINGSTRINGabc

我认为应该注意 - 根据你需要的行为,你可以混合indexrindex调用或使用上述版本之一(它相当于正则表达式(.*)(.*?)组)。


查看完整回答
反对 回复 2019-08-15
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

start = 'asdf=5;'end = '123jasd's = 'asdf=5;iwantthis123jasd'print s[s.find(start)+len(start):s.rfind(end)]

iwantthis


查看完整回答
反对 回复 2019-08-15
  • 3 回答
  • 0 关注
  • 517 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信