我正在为乐谱编写自己的解析器,就像学习乐趣一样。
所以,如果我有一个弦乐,比如和弦进行:
In [1]: string = ' A D F#;m B;m F#;m'
我很想找到每个和弦的弦乐位置,我可以做,例如:
In [3]: string.index('D')
Out[3]: 12
但是,如果我尝试查找重复元素的索引,例如F#;m
,则输出将为:
In [4]: string.index('F#;m')
Out[4]: 15
但是,有两次F#; m,一次在15位,一次在34位。
是否有其他方法可以记录字符串中每个和弦的位置,尤其是当字符串中存在相同元素两次时可以工作的那个?
答案 0 :(得分:1)
使用re.finditer
:
>>> import re
>>> s = ' A D F#;m B;m F#;m'
>>> [m.start() for m in re.finditer('F#;m', s)]
[15, 34]