Python 3.x 如何使循环或其他函数一次又一次地重复相同的for循环?

Python 3.x 如何使循环或其他函数一次又一次地重复相同的for循环?,python-3.x,scrapy,Python 3.x,Scrapy,我从Dmoz网站获得的内容。我做的for循环,我不想每次都重复。相反,我想让每个函数都不重复。我创建了许多函数。我分享了一个,只是为了向您展示zip正在绑定names和finder的值。我不想在每个函数中重复循环 def parse_about(self, response): # do your stuff on second page items = response.meta['items'] names = {'name1': 'Headings',

我从Dmoz网站获得的内容。我做的
for循环
,我不想每次都重复。相反,我想让每个函数都不重复。我创建了许多函数。我分享了一个,只是为了向您展示
zip
正在绑定names和finder的值。我不想在每个函数中重复循环

def parse_about(self, response):
    # do your stuff on second page
    items = response.meta['items']
    names = {'name1': 'Headings',
             'name2': 'Paragraphs',
             'name3': '3 Projects',
             'name4': 'About Dmoz',
             'name5': 'Languages',
             'name6': 'You can make a differnce', 
             'name7': 'Further Information'
             }

    finder = {'find1': 'h2::text , #mainContent h1::text',
              'find2': 'p::text',
              'find3': 'li~ li+ li b a::text , li:nth-child(1) b a::text',
              'find4': '.nav ul a::text , li:nth-child(2) b a::text',
              'find5': '.nav~ .nav a::text',
              'find6': 'dd::text , #about-contribute::text',
              'find7': 'li::text , #about-more-info a::text'
              }
    for name, find in zip(names.values(), finder.values()):
        items[name] = response.css(find).extract()
        yield items

假设当前代码按预期工作,而其他函数仅因
名称
查找器
字典的内容不同,则可以使用如下函数提取循环:

def find_items(response, names, finder):
    items = response.meta['items']
    for name, find in zip(names.values(), finder.values()):
        items[name] = response.css(find).extract()
        yield items
然后,如果您使用的是Python 3.3或更高版本,则可以在调用函数中使用
yield from
语句,如下所示:

yield from find_items(reponse, names1, finder1)

也许有办法做到这一点,但目前还不清楚目标是什么。你能否编辑你的帖子,给出一个例子,说明你试图避免的重复,不止一次?这是函数,我创建了更多的函数,但问题是我创建的
for loop
,我必须在每个函数中应用相同的
压缩
,我不想在循环中重复这个
。有没有办法让所有的函数都只循环一次,或者我必须再做一个特殊的函数来循环所有的函数。如果是这样的话,请帮我编辑一些代码。这是我给name1和finder1取名字的错误。这些只是名字和查找器。答案中的代码是正确的。将
find_items
函数添加到类中,并以这种方式编辑您的其他函数:
def parse_about(self,response):names1={…}finder1={…}从find_items(response,names1,finder1)获得收益