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