我有一条代码行,从多个列表中提取变量,我希望它避免StopIteration
错误,并继续执行下一行。目前我正在使用break
函数来避免StopIteration
,但这只会给我列表中的第一个项目,并且在其后留下一个空白行,如果我要打印它出来。
这里有两个具有相同问题的迭代。
def compose_line5(self, synset_offset, pointer_list):
self.line5 = ''''''
for item in pointer_list:
self.line5 += '''http://www.example.org/lexicon#'''+synset_offset+''' http://www.monnetproject.eu/lemon#has_ptr '''+pointer_list.next()+'''\n'''
break
return self.line5
def compose_line6(self, pointer_list, synset_list):
self.line6 = ''''''
for item in synset_list:
self.line6 += '''http://www.example.org/lexicon#'''+pointer_list.next()+''' http://www.monnetproject.eu/lemon#pos '''+synset_list.next()+'''\n'''
break
return self.line6
如果没有break,我就会收到这个错误:
Traceback (most recent call last):
File "wordnet.py", line 225, in <module>
wordnet.line_for_loop(my_file)
File "wordnet.py", line 62, in line_for_loop
self.compose_line5(self.synset_offset, self.pointer_list)
File "wordnet.py", line 186, in compose_line5
self.line5 += '''http://www.example.org/lexicon#'''+self.synset_offset+''' http://www.monnetproject.eu/lemon#has_ptr '''+self.pointer_list.next()+'''\n'''
StopIteration
这个问题有快速解决方法吗,还是我必须为我使用iter()的每种方法捕获异常?
'http://www.example.org/lexicon#{} http://www.monnetproject.eu/lemon#has_ptr{}\n'.format(synset_offset, pointer_list.next())
。 - Martijn Pieters