此处必须有更简单的方法或功能来执行此代码:
#!/usr/bin/env python
string = "test [*string*] test [*st[ *ring*] test"
points = []
result = string.find("[*")
new_string = string[result+1:]
while result != -1:
points.append(result)
new_string = new_string[result+1:]
result = new_string.find("[*")
print points
有什么想法吗?
答案 0 :(得分:3)
import re
string = "test [*string*] test [*st[ *ring*] test"
points = [m.start() for m in re.finditer('\[', string)]
答案 1 :(得分:0)
看起来你正试图让字符串中的索引与'[*'
...
indices=[i for i in range(len(string)-1) if string[i:i+2] == '[*']
但是这个输出与你的代码产生的不同。你能验证你的代码是否符合要求吗?
另请注意,string
是标准库中python模块的名称 - 虽然它不经常使用,但避免将其用作变量名称可能是个好主意。 (不要使用str
)
答案 2 :(得分:0)
>>> indexes = lambda str_, pattern: reduce(
... lambda acc, x: acc + [acc[-1] + len(x) + len(pattern)],
... str_.split(pattern), [-len(pattern)])[1:-1]
>>> indexes('123(456(', '(')
[3, 7]
>>> indexes('', 'x')
[]
>>> indexes("test [*string*] test [*st[ *ring*] test", '[*')
[5, 21]
>>> indexes('1231231','1')
[0, 3, 6]