여러 줄에서 변수를 가져 오는 줄이 있는데 다음 줄로 이동할 수 있도록 StopIteration 오류가 발생하지 않도록하고 싶습니다. 현재 break 함수를 사용하고 있지만 StopIteration을 피할 수는 있지만 목록의 첫 번째 항목 만 제공하고 그 뒤에 빈 줄을 남깁니다.Python에서 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()를 호출하고 pointer_list를 전달합니까? – doctorlove
죄송합니다, 오타! 어쨌든 차이는 없습니다! – Johnnerz
여기에 아무 것도 인용 할 필요가 없습니다. 줄 바꿈을 포함하지 않고 인용 부호가 지나치게 길어집니다. 더 나은 방법은 문자열 형식을 사용하는 것입니다. ''http://www.monnetproject.eu/lemon#has_ptr{}\n'.format(synset_offset, pointer_list.next ('))'. –