Python在一个字符串中查找

时间:2012-06-20 07:15:46

标签: python string find

此处必须有更简单的方法或功能来执行此代码:

    #!/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

有什么想法吗?

3 个答案:

答案 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]