yo'*_*yo' 7 python string search iterator
我正在寻找如何迭代字符串中子字符串位置的最简单方法.目前我正在使用一个生成器,但我觉得它不是Python:
def iteratePos(haystack, needle) :
pos = haystack.find(needle)
while pos >= 0 :
yield pos
pos = haystack.find(needle, pos+1)
s = "ABC 11 ABC 111 ABC 1"
for i in iteratePos(s, "ABC") :
print "aye bee see at", i
# finds 0, 7, 15
for i in iteratePos(s, "1") :
print "one at", i
# finds 4, 5, 11, 12, 13, 19
Run Code Online (Sandbox Code Playgroud)
那么,是否有可能将其作为一个合理的单行程?或者我应该坚持我的解决方案?
(注意:当needle只有一个字符时,是否应该有一个简单的解决方案,我也对此感兴趣.)
我认为你的解决方案很好......但我想你可以做
[i for i in range(len(s)) if s[i:].startswith(needle)]
Run Code Online (Sandbox Code Playgroud)
如果你真的不喜欢你的解决方案