【发布时间】:2013-06-23 11:08:18
【问题描述】:
我有一行从多个列表中提取变量,我希望它避免出现 StopIteration 错误,以便它可以移动到下一行。目前我正在使用中断功能,这避免了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
这是我没有休息时得到的错误:
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() 的每个方法捕获异常?
【问题讨论】:
-
你为什么要调用 self.pointer_list.next() 并传入一个指针列表?
-
对不起,错字!!反正没什么区别!
-
这里不需要三引号;您不包括换行符,并且引用过于冗长。更好的是,使用字符串格式:
'http://www.example.org/lexicon#{} http://www.monnetproject.eu/lemon#has_ptr{}\n'.format(synset_offset, pointer_list.next()). -
每行必须有两个空格,我将它们转换为三重格式,它不接受任何完整的行,我可以在该格式中留空格吗?
标签: python iteration stopiteration