1

ここでこのコードを実行するためのより簡単な方法または関数が必要です。

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

何か案は?

4

3 に答える 3

3
  import re
  string = "test [*string*] test [*st[ *ring*] test"

  points = [m.start() for m in re.finditer('\[', string)]
于 2012-06-20T07:22:50.547 に答える
0

文字列内で一致するインデックスを取得しようとしているようです'[*'...

indices=[i for i in range(len(string)-1) if string[i:i+2] == '[*']

ただし、この出力は、コードが生成するものとは異なります。あなたのコードがあなたが望むことをしていることを確認できますか?

またstring、これは標準ライブラリのpythonモジュールの名前であることに注意してください。あまり頻繁には使用されませんが、変数名として使用しないことをお勧めします。(strどちらも使用しないでください)

于 2012-06-20T07:22:59.630 に答える
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]
于 2012-06-20T07:38:13.337 に答える