猿问

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

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

如何在两个子串('123STRINGabc' -> 'STRING')之间找到一个字符串?


我目前的方法是这样的:


>>> start = 'asdf=5;'

>>> end = '123jasd'

>>> s = 'asdf=5;iwantthis123jasd'

>>> print((s.split(start))[1].split(end)[0])

iwantthis

然而,这似乎是非常低效和非pythonic。做这样的事情有什么更好的方法?


忘记提及:字符串可能无法以start和开头和结尾end。他们之前和之后可能会有更多的角色。


MMTTMM
浏览 518回答 3
3回答

精慕HU

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调用或使用上述版本之一(它相当于正则表达式(.*)和(.*?)组)。

素胚勾勒不出你

start = 'asdf=5;'end = '123jasd's = 'asdf=5;iwantthis123jasd'print s[s.find(start)+len(start):s.rfind(end)]给iwantthis
随时随地看视频慕课网APP

相关分类

Python
我要回答