查找两个子串之间的字符串如何在两个子串('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
我认为应该注意 - 根据你需要的行为,你可以混合index
和rindex
调用或使用上述版本之一(它相当于正则表达式(.*)
和(.*?)
组)。
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
start = 'asdf=5;'end = '123jasd's = 'asdf=5;iwantthis123jasd'print s[s.find(start)+len(start):s.rfind(end)]
给
iwantthis
添加回答
举报
0/150
提交
取消