如何查找所有出現的子字符串?Pythonstring.find()和string.rfind()若要獲取字符串中的子字符串的索引,請執行以下操作。我想知道是否有string.find_all()它可以返回所有找到的索引(不僅從開始返回第一個索引,或者從末尾返回第一個索引)。例如:string = "test test test test"print string.find('test') # 0print string.rfind('test') # 15#this is the goalprint string.find_all('test')
# [0,5,10,15]
5 回答

汪汪一只貓
TA貢獻1898條經驗 獲得超8個贊
import re[m.start() for m in re.finditer('test', 'test test test test')]#[0, 5, 10, 15]
[m.start() for m in re.finditer('(?=tt)', 'ttt')]#[0, 1]
search = 'tt'[m.start() for m in re.finditer('(?=%s)(?!.{1,%d}%s)' % (search, len(search)-1, search), 'ttt')]#[1]
re.finditer
[]
()

米琪卡哇伊
TA貢獻1998條經驗 獲得超6個贊
>>> help(str.find)Help on method_descriptor:find(...) S.find(sub [,start [,end]]) -> int
def find_all(a_str, sub): start = 0 while True: start = a_str.find(sub, start) if start == -1: return yield start start += len(sub) # use start += 1 to find overlapping matcheslist(find_all('spam spam spam spam', 'spam')) # [0, 5, 10, 15]
添加回答
舉報
0/150
提交
取消