根据标签列表中该单词的索引位置,找到该单词在字符串中的开始和结束位置

Jit*_*mes 5 python string list

我有一句话

str = 'cold weather gives me cold' 
Run Code Online (Sandbox Code Playgroud)

和一个清单

 tag = ['O','O','O','O','disease'] 
Run Code Online (Sandbox Code Playgroud)

这表明句子中的第5个字是疾病类型。现在,我需要获取第5个单词的开始和结束位置。

如果仅使用“ cold”进行字符串搜索,它将为我提供“ cold”的起始位置,该位置最先出现。

Cod*_*eIt 1

这应该可以做到。

def get(str,target_index):
  start = len(" ".join(str.split(" ")[:target_index])) + 1
  end = start + len(str.replace('.','').split(' ')[target_index])
  return (start,end)

str = 'cold weather gives me cold.' 
tag = ['O','O','O','O','disease']
start,end = get(str,tag.index('disease'))
print(start,end,str[start:end]) # outputs 22 26 cold

str = 'cold weather gives me cold'
tag = ['O','O','O','O','disease']
start,end = get(str,tag.index('disease'))
print(start,end,str[start:end]) # outputs 22 26 cold

str = 'cold weather gives me cold and cough' 
tag = ['O','O','O','O','disease']
start,end = get(str,tag.index('disease'))
print(start,end,str[start:end]) # outputs 22 26 cold
Run Code Online (Sandbox Code Playgroud)

在这里查看它的实际效果。

希望能帮助到你!