是'搜索'导致'字符串索引超出范围' ? (Python)的

时间:2016-05-24 13:16:57

标签: python search treetagger

我试图识别文本中找到的特定句法模式的所有实例:RB + NN | NNS | NP | PP。也就是说,我正在寻找紧跟名词的副词。我使用TreeTagger标记了我的文字。标记的文本存储在名为“标记”的列表中。看起来像这样:

    how  WRB
    hard JJ
    it   PP
    was  VBD

这是我的代码的相关部分:

adverb = re.compile(r'RB$')
noun = re.compile(r'NN')
for n in range(len(tags)):                                                                                                                          
    w = tags[n]
    if adverb.search(w) != None and noun.search(w[n+1]) != None:
        print(' '.join(tags[n-2 : n+3]))

我的问题是第五行产生以下错误:

     if adverb.search(w) != None and noun.search(w[n+1]) != None:
     IndexError: string index out of range

如果第四行代码是这个......

     if adverb.search(w) != None:

...然后返回一个副词列表。

我真的迷失了1)为什么我会犯这个错误; 2)我怎么能解决它。你们提供的任何指导都将非常受欢迎。

1 个答案:

答案 0 :(得分:0)

你的问题是:

w[n+1]

您将列表tags与该列表中的字符串w混淆。如果要访问列表中的其他项,则需要使用tags[...],而不是w[...]。此外,您应确保您使用的索引位于列表范围内。