Python для цикла и проблема его генератора - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь сгенерировать какую-то ссылку.

ПРИМЕЧАНИЕ: ПРОБЛЕМА С возвращением против печати. ​​

Когда я пишу код с возвратом, возвращается только один linK:

запустите этот код:

import requests
import re

wikiurl = 'https://en.wikipedia.org/wiki/List_of_states_and_territories_of_the_United_States'


state_pat = re.compile(r'title=\"(\w+)\">')

def get_page_content(url):
    response = requests.get(url)
    return response.text

def link_generator(wikiurl):
    content = get_page_content(wikiurl)
    names = state_pat.findall(content)
    for i in names:
        return 'https://www.local.com/business/results/listing.cfm?s=tile+and+grout+cleaning&ar=' + i + '%2CNY&gsp=ZFZWU1RaU09zWGNYdjFEV1l2ZHFLNVZUUFRPT3c3a21lbFVCbERQOU5VS3p6ai9DRXNMa29PcVZ0ZVV0TXZLM01wUVFUUHZYK2lrMnB5VGJyMHZJeUNoK1dXaUoxZ1NKT3AxbVlJOGN1aVBEb1NRMzlCemdDVHh5aGd3eU5DYUpKWDRtNFVQR0llOFJibUhQR3pSV3ppWFR4ekJoRVltL29UdFQ0MW9KUS9IenJrcjVBMUt3bkErRnlSVnFjRnZ0TjhRWEdET0FuZWRVUGNkemdxUlkzOUYyUjZXbHBzQWRMY3hEUTY4WmtnYkRsSkEvazBrVVY5d0NmSVVMaWp0WnNDNmFsZFNzMitWeHZDYTg2YmJwRGQzSisvOUJaYWNBaFdUd21LaWJpNk9veS9OT1N1VE5DV3RUNDIxdkY5NmZ4bWFVcWtLc1BlVkNRNlEvSG4ydER1T1ZkcXk4Um5BWU5kUU9UZnVOUE9BPQ%253D%253D&lwfilter=&wsrt=&wpn='


a = link_generator(wikiurl)
print(a)

, и если я запускаю этот код, добавляя печать в fuction, он возвращает всю ссылку, почему?мне нужна вся ссылка с return

запустите этот код: вы увидите другое:

import requests
import re

wikiurl = 'https://en.wikipedia.org/wiki/List_of_states_and_territories_of_the_United_States'


state_pat = re.compile(r'title=\"(\w+)\">')

def get_page_content(url):
    response = requests.get(url)
    return response.text

def link_generator(wikiurl):
    content = get_page_content(wikiurl)
    names = state_pat.findall(content)
    for i in names:
        print('https://www.local.com/business/results/listing.cfm?s=tile+and+grout+cleaning&ar=' + i + '%2CNY&gsp=ZFZWU1RaU09zWGNYdjFEV1l2ZHFLNVZUUFRPT3c3a21lbFVCbERQOU5VS3p6ai9DRXNMa29PcVZ0ZVV0TXZLM01wUVFUUHZYK2lrMnB5VGJyMHZJeUNoK1dXaUoxZ1NKT3AxbVlJOGN1aVBEb1NRMzlCemdDVHh5aGd3eU5DYUpKWDRtNFVQR0llOFJibUhQR3pSV3ppWFR4ekJoRVltL29UdFQ0MW9KUS9IenJrcjVBMUt3bkErRnlSVnFjRnZ0TjhRWEdET0FuZWRVUGNkemdxUlkzOUYyUjZXbHBzQWRMY3hEUTY4WmtnYkRsSkEvazBrVVY5d0NmSVVMaWp0WnNDNmFsZFNzMitWeHZDYTg2YmJwRGQzSisvOUJaYWNBaFdUd21LaWJpNk9veS9OT1N1VE5DV3RUNDIxdkY5NmZ4bWFVcWtLc1BlVkNRNlEvSG4ydER1T1ZkcXk4Um5BWU5kUU9UZnVOUE9BPQ%253D%253D&lwfilter=&wsrt=&wpn=')


a = link_generator(wikiurl)
print(a)

1 Ответ

0 голосов
/ 30 января 2019

Когда вы запускаете оператор return в функции, он не выполняет никаких дальнейших строк и возвращается к своему вызывающему.Если вы хотите многократно возвращать элементы в генератор, вы можете заменить return на yield.Либо соберите результаты в виде списка и верните список.

Затем вам нужно изменить свою последнюю строку при вызове на:

a = list(link_generator(wikiurl))

, чтобы распаковать генератор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...