2

但我需要第二次出现的索引。就像我有一个字符串“asd#1-2#qwe”我可以简单地使用索引方法找到第一个#的索引值,也就是3。但是现在我想得到第二个#的索引,应该是7 .

4

4 回答 4

6

使用enumerate和一个list comprehension

>>> s = "asd#1-2#qwe"
>>> [i for i, c in enumerate(s) if c=='#']
[3, 7]

或者,如果字符串仅包含两个'#',则使用str.rfind

>>> s.rfind('#')
7

使用regex:这也适用于重叠的子字符串:

>>> s = "asd##1-2####qwe"
>>> import re
#Find index of all '##' in s
>>> [m.start() for m in re.finditer(r'(?=##)', s)]
[3, 8, 9, 10]
于 2013-11-07T19:11:55.070 回答
2

用这个:

s = "asd#1-2#qwe"
try:
    s.index('#',s.index('#')+1)
except:
    print "not found"
于 2013-11-07T19:12:29.230 回答
2

使用 index 方法获取第一次出现的#。如果 index 方法允许起始位置,则使用第一个 # + 1 的位置作为起始位置。如果不是,则从第一个 # + 1 的位置开始复制字符串(可能是副本,然后是子字符串)。

于 2013-11-07T19:13:13.670 回答
0
a =  "asd#1-2#qwe"

f = '#'

idx = []
for i, v in enumerate(a):
    if v == f:
        idx.append(i)
print idx
于 2013-11-07T19:11:43.567 回答