但我需要第二次出现的索引。 就像我有一个字符串“asd#1-2#qwe” 我可以简单地使用索引方法来查找第一个#的索引值,即3。 但现在我想得到第二个#的索引,应该是7。
答案 0 :(得分: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]
答案 1 :(得分:2)
使用它:
s = "asd#1-2#qwe"
try:
s.index('#',s.index('#')+1)
except:
print "not found"
答案 2 :(得分:2)
使用索引方法获取第一次出现的#。如果索引方法允许起始位置,则使用第一个#+ 1的位置作为起始位置。如果没有,请从第一个#+ 1的位置开始复制字符串(可能是副本,然后是子字符串)。
答案 3 :(得分:0)
a = "asd#1-2#qwe"
f = '#'
idx = []
for i, v in enumerate(a):
if v == f:
idx.append(i)
print idx