У меня есть строка, которая вытягивает переменные из нескольких списков, и я хочу, чтобы она избегала ошибки StopIteration, которая появляется, чтобы она могла перейти на следующую строку. В настоящий момент я использую функцию break, это позволяет избежать StopIteration, но дает мне только первый элемент в списке и оставляет после него пустую строку, если я должен ее распечатать.Как избежать ошибки StopIteration в python
Вот две из моих итераций, которые имеют ту же проблему.
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
Есть быстрое решение для этого, или я должен перехватывать исключения для каждого метода я использую ИТЭР() в?
Почему вы вызываете self.pointer_list.next() и передаете в pointer_list? – doctorlove
К сожалению, Типо! не имеет никакого значения! – Johnnerz
Здесь нет необходимости в тройной цитате; вы не включаете разрывы строк, а цитирование слишком многословно. Еще лучше используйте форматирование строк: 'http://www.example.org/lexicon# {} http://www.monnetproject.eu/lemon#has_ptr{}\n'.format(synset_offset, pointer_list.next ()) '. –