'search' 导致 'String index out of range' 吗? (Python)
Is 'search' causing 'String index out of range' ? (Python)
我正在尝试识别在文本中找到的特定句法模式的所有实例:RB + NN|NNS|NP|PP。也就是说,我正在寻找紧跟名词的副词。我使用 TreeTagger 标记了我的文本。标记的文本存储在名为 'tags' 的列表中,如下所示:
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) 我该如何解决它。非常感谢你们能提供的任何指导。
你的问题是这样的:
w[n+1]
您将列表 tags
与该列表中的字符串 w
混淆了。如果你想访问列表中的另一个项目,你需要使用 tags[...]
,而不是 w[...]
。另外,您应该确保您使用的索引在列表的范围内。
我正在尝试识别在文本中找到的特定句法模式的所有实例:RB + NN|NNS|NP|PP。也就是说,我正在寻找紧跟名词的副词。我使用 TreeTagger 标记了我的文本。标记的文本存储在名为 'tags' 的列表中,如下所示:
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) 我该如何解决它。非常感谢你们能提供的任何指导。
你的问题是这样的:
w[n+1]
您将列表 tags
与该列表中的字符串 w
混淆了。如果你想访问列表中的另一个项目,你需要使用 tags[...]
,而不是 w[...]
。另外,您应该确保您使用的索引在列表的范围内。