计算字符串中第n个单词的索引

2024-03-28 09:18:01 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个单词在一个从零开始的字符串中的索引(“索引”在这个句子中是位置2),并且一个单词被定义为被空格分隔的单词,我需要找到这个单词的第一个字符的索引。你知道吗

我的空白正则表达式模式是"( +|\t+)+",只是为了覆盖我的所有基(新行字符除外)。我使用split()将字符串分隔成单词,然后将每个单词的长度相加。然而,我需要考虑一种可能性,即单词之间使用了不止一次的空格字符,因此我不能简单地将单词数减去1添加到该数字中,并且每次都保持准确。你知道吗

示例:

>>> example = "This is an example sentence"
>>> get_word_index(example, 2)
8

Tags: 字符串示例定义isexample模式数字可能性
2条回答

更改正则表达式,使每个单词周围都包含空格,以防丢失。表达式\s*\S+\s*将首先使用前导空格,然后是实际单词,然后是尾随空格,因此只有结果列表中的第一个单词可能有前导空格(如果字符串本身以空格开头)。其余部分由单词本身组成,后面可能跟有空格。在你有了这个列表之后,只需在你想要的单词之前找到所有单词的总长度,并说明这个字符串可能有任何前导空格。你知道吗

def get_word_index(s, idx):
    words = re.findall(r'\s*\S+\s*', s)
    return sum(map(len, words[:idx])) + len(words[idx]) - len(words[idx].lstrip())

测试:

>>> example = "This is an example sentence"
>>> get_word_index(example, 2)
8
>>> example2 = ' ' + example
>>> get_word_index(example2, 2)
9

也许你可以试试:

your_string.index(your_word)

documentation

相关问题 更多 >