У меня есть паук, пишущий насквозь, но полученный элемент не выполняется в цикле for, см. Код ниже.
def parse_paragraph(self, div_list, category_name, group_name):
for div in div_list:
duilian_text_list = div.xpath('./text()').extract()
duilian_text_list = strip_list(duilian_text_list)
if len(duilian_text_list) == 0:
continue
elif len(duilian_text_list) == 1:
duilian_text = duilian_text_list[0]
self.parse_duilian(duilian_text, category_name, group_name)
elif len(duilian_text_list) == 2 and not is_single_line(duilian_text_list[0]):
duilian_text = ''.join(duilian_text_list)
self.parse_duilian(duilian_text, category_name, group_name)
else:
for duilian_text in duilian_text_list:
duilian_item = DuilianItem()
duilian_item['id'] = str(uuid.uuid4()).replace('-', '')
duilian_item['category_id'] = getCategoryName(category_name)
duilian_item['group_name'] = group_name
duilian = parse_duilian(duilian_text)
if duilian != '|':
duilian_item['name'] = duilian
duilian_item['desc'] = ''
duilian_item['author'] = ''
duilian_item['shuti'] = ''
duilian_item['word_count'] = len(duilian_item['name']) // 2
duilian_item['image_url'] = ''
print('-------I am here--------')
yield duilian_item
Когда я вызываю эту функцию, я ничего не получаю в окне вывода, кажется, строкаyiled duilian_item
не работает, и это даже мешает выполнению другого кода (строка печати над ним).
Когда я закомментирую последнюю строку yiled duilian_item
, все работает, и я получил -------I am here--------
вокно вывода, что здесь не так?
Проще говоря, следующий код ничего не печатает, но если я закомментирую yiled 1
, он выводит список, поэтому yield в python не работает в цикле for?
def strange_yield():
list = [1, 2, 3]
for i in list:
print(i)
yield 1
strange_yield()