首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不使用起始索引或范围作为参数的情况下,找到句子中第二次或第三次出现的索引数?(python)

如何在不使用起始索引或范围作为参数的情况下,找到句子中第二次或第三次出现的索引数?(python)
EN

Stack Overflow用户
提问于 2018-01-03 12:54:57
回答 3查看 84关注 0票数 0

我有一句话-

代码语言:javascript
复制
Sammy likes to swim in the ocean, likes to spin servers, and likes to smile.

我想找到单词likes第二次出现的起始索引号。

但我不想使用起始索引号或范围作为str.find()函数的参数。

如果可能的话,我希望避免正则表达式,因为对于初学者来说很难理解。

注意:使用str.find()函数并不是强制性的。我只想知道,如果不给开始索引或范围作为参数,这是否可能。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-03 13:10:44

法向循环法:

代码语言:javascript
复制
string = "Sammy likes to swim in the ocean, likes to spin servers, and likes to smile."
word = "likes"
indexes = []
for i in range(len(string)):
    if string[i:i+len(word)] == word:
        indexes.append(i)
print(indexes[1]) # Second location, outputs: 34

列表理解:

代码语言:javascript
复制
[i for i in range(len(string)) if string[i:i+len(word)] == word][1] # Outputs: 34
票数 1
EN

Stack Overflow用户

发布于 2018-01-03 13:01:10

使用第二个捕获组的正则表达式startend

代码语言:javascript
复制
import re
s = 'Sammy likes to swim in the ocean, likes to spin servers, and likes to smile.'
m = re.match(r'.*(likes).*(likes).*', s)
m.start(2)  # start of second capturing group
# 61
m.end(2)  # end of second capturing group
# 66
s[m.start(2), m.end(2)]
# 'likes'
票数 3
EN

Stack Overflow用户

发布于 2018-01-03 13:04:21

使用regex怎么样?

代码语言:javascript
复制
import re

string = 'Sammy likes to swim in the ocean, likes to spin servers, and likes to smile.'
pattern = 'likes'
likes = [(m.start(0), m.end(0)) for m in re.finditer(pattern, string)]
# [(6, 11), (34, 39), (61, 66)]

likes1有你想要的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48077849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档