首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用start_index和end_index查找句子中单词的位置

如何用start_index和end_index查找句子中单词的位置
EN

Stack Overflow用户
提问于 2021-05-25 12:39:56
回答 2查看 287关注 0票数 1

示例1 :

代码语言:javascript
复制
start = 42
end = 48
string = "This is in line with others, showing that Noggin can function as a BMP-6 antagonist [21,22]."

代码语言:javascript
复制
Output = [9,9]

使用开始索引和结束索引,如何返回完整单词的索引?(在开始位置和结尾位置,这是字符串的第九个单词)

示例2 :

代码语言:javascript
复制
start = 42
end = 52
string = "This is in line with others, showing that Noggin can function as a BMP-6 antagonist [21,22]."

代码语言:javascript
复制
Output = [9,10]

在第二种情况下,选择了多个单词,因此我们需要返回第一个单词的索引(Noggin)和最后一个单词的索引(can)。

示例3(输出总是2个数字) :

代码语言:javascript
复制
start = 42
end = 61
string = "This is in line with others, showing that Noggin can function as a BMP-6 antagonist [21,22]."

代码语言:javascript
复制
Output = [9,11]

Output = first_word_index,last_word_index

示例4(如果在末尾选择了一个空格,我们不关心) :

代码语言:javascript
复制
start = 42
end = 49
string = "This is in line with others, showing that Noggin can function as a BMP-6 antagonist [21,22]."

代码语言:javascript
复制
Output = [9,9]

示例5(如果没有完全选择单词) :

代码语言:javascript
复制
start = 42
end = 51
string = "This is in line with others, showing that Noggin can function as a BMP-6 antagonist [21,22]."

代码语言:javascript
复制
Output = [9,10]

如果一个词没有被完全选中,我们的表现就像它被完全选中了一样。

EN

回答 2

Stack Overflow用户

发布于 2021-05-25 13:01:09

以下功能应适用于任何示例:

代码语言:javascript
复制
def words(start,end,string):
    c=1    
    l=[]
    for i in range(end):
        if string[i]==' ':
            c=c+1
        if i==start:
            l.append(c)
    if string[i]!=' ':
        l.append(c)
    else:
        l.append(c-1)
    return l
票数 0
EN

Stack Overflow用户

发布于 2021-05-25 13:11:08

可以使用正则表达式,查找所有单词,这将返回索引的一个元组:

代码语言:javascript
复制
from typing import Tuple

def word_index(string : str, start : int, end : int) -> Tuple[int, int]:
    import re

    word_re = re.compile(r'\w+')

    start_index = len(word_re.findall(string[:start+1]))
    end_index = len(word_re.findall(string[:end]))

    return start_index, end_index

word_index(42, 48) # (9, 9)
word_index(42, 52) # (9, 10)
word_index(42, 61) # (9, 11)
word_index(42, 49) # (9, 9)
word_index(42, 51) # (9, 10)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67688125

复制
相关文章

相似问题

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