首页 > 解决方案 > 获取句子中 n-gram 单词的位置

问题描述

在 python 中,我想得到一个单词在句子中的位置。匹配的字符串可以是几个单词。

sentence = "Bloomberg announced today that Gordian Capital will implement the solution to help its clients pursue new fund opportunities faster."

search_str = "Bloomberg" 

预期输出:

0

要匹配的字符串可以由多个单词组成。在这种情况下,我想获得开始的位置。

search_str = "Gordian Capital" 

预期输出:

4

search_str 可以是特殊字符和数字的组合,例如$5.1 billion. 我尝试过这样的事情,但它将原始句子分成单词,我不知道如何处理 n-gram 案例。

result = [i+1 for i,w in enumerate(sentence.split()) if w == search_str]

任何解决方案将不胜感激。谢谢

标签: pythonregexstringmatch

解决方案


  1. 使用search_str拆分句子

结果 = sentence.split(search_str)

  1. 取结果的第一个元素并用空格分割

结果 = 结果[0].split(' ')

看起来已经完成了,只需要计算结果列表中的元素

len(结果)

但有时,可能会出现一个空元素。

为避免这种情况,必须过滤列表

result = [elem for elem in filter(lambda x: x!="", result)]

打印(长度(结果))

所有这些你都可以写在一行中:

result = len([elem for elem in filter(lambda x: x != "", sentence.split(search_str)[0].split(" ")) ])

推荐阅读