《Python自然语言处理》第一章 习题解答 练习17

问题描述:

  使用text9.index()查找词sunset的索引值。你需要将这个词作为一个参数插入到圆括号之间。通过尝试和出错的过程中找到完整的句子中包含这个词的切片。

解题思路:

  用两个集合,一个存放sunset的位置,一个存放标点符号的位置,然后将sunset插入到标点符号之间。

代码:

 1 import nltk
 2 from nltk.book import *
 3 
 4 
 5 def solution(keyword, text):
 6     # keyword = 'sunset'
 7     pun = [i for i, j in enumerate(text) if j == '.' or j == '?' or j == '!']
 8     sunset = [i for i, j in enumerate(text) if j == keyword]
 9     ans = []
10     flag = 0
11     for i in range(len(sunset)):
12         j = flag
13         while j < len(pun):
14             if sunset[i] < pun[j] and pun[j - 1] < sunset[i]:
15                 ans.append([pun[j - 1] + 1, pun[j] + 1])
16                 flag = j + 1
17                 break
18             j += 1
19     # print ans
20     for i in range(len(ans)):
21         print 'start from %d to end in %d' % (ans[i][0], ans[i][1])
22         print ' '.join(text[ans[i][0]: ans[i][1]])
23 
24 if __name__ == "__main__":
25     solution()
26     raw_input()

 

posted on 2017-04-10 17:59  冰霁  阅读(773)  评论(0)    收藏  举报

导航