[Python] [Str格式]如何使用“查找”查找下一个索引号

python find

45 观看

2回复

44 作者的声誉

这是一个句子

"[come]and[joy]"

我想在第二个文本,"[ ]" 所以我将使用

 Mid(10,14)

为了获得indexnumber(10,14),我编写了下一个代码

sentense.findall('[')[1]

但是,发生了错误

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

如果我使用以下代码

 sentense.find('[')

它仅返回第一个索引号'['= 0我如何获得第二个索引号'['= 10?

它一定不能像sendense.find('[',1)这样使用,有可能搜索第二个或第三个下一个级别

请帮我

作者: Heart Aim DJ 的来源 发布者: 2017 年 9 月 15 日

回应 2


0

83596 作者的声誉

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

>>> 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']
作者: John1024 发布者: 2017 年 9 月 15 日

0

3100 作者的声誉

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

>>> 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模块的更多信息。

作者: Dinesh Pundkar 发布者: 2017 年 9 月 15 日
32x32