[Python] [Str formating]如何在使用'查找'中找到下一个索引号。

时间:2017-09-15 05:59:14

标签: python find

这是一个句子

$('#' +'<%=txtUserName.ClientID %>').val('');

我想在第二个"[come]and[joy]" 中获取文字 所以我会使用

"[ ]"

获取indexnumber(10,14), 我写了下一个代码

 Mid(10,14)

但是,发生了错误

sentense.findall('[')[1]

如果我使用以下代码

"AttributeError: 'str' object has no attribute 'findall'   

它只返回第一个索引号&#39; [&#39; = 0 我怎样才能获得第二个索引号码&#39; [&#39; = 10?

一定不能像这样使用sentense.find(&#39; [&#39;,1), 可以搜索任何下一级的第二级或第三级

请帮帮我

2 个答案:

答案 0 :(得分:0)

获取字符串中所有[出现的索引:

>>> sentence = "[come] and[joy]"
>>> [i for i,c in enumerate(sentence) if c=='[']
[0, 10]

提取字符串(不使用re):

>>> start = [i+1 for i,c in enumerate(sentence) if c=='[']
>>> end = [i for i,c in enumerate(sentence) if c==']']
>>> [sentence[i:j] for i,j in zip(start, end)]
['come', 'joy']

答案 1 :(得分:0)

从第二个[]获取文本的最佳解决方案是使用正则表达式。

>>> import re
>>> a = re.findall(r'\[.*\].*\[(.*)\]',s)
>>> a
['joy']
>>> a[0]
'joy'
>>>

如果你只想使用字符串索引,那么就可以像John1024一样回答。

#Get indexes of [
>>> b=[i for i,c in enumerate(s) if c=='[']
>>> b
[0, 9]
>>>

#Get indexes for ]
>>> c=[i for i,c in enumerate(s) if c==']']
>>> c
[5, 13]
>>>

#Get values
>>> s[b[1]+1:c[1]]
'joy'
>>>

您可以找到有关re模块here的更多信息。