想知道为什么我的小队函数运行了两次。靠近底部的大多数函数都将前一个函数中的数据作为输入,最后一个函数将查找列表中的最大值。 我想在这里正确地设置main,这样1)在这个程序中,所有的东西都能正常运行;2)当从另一个程序调用时,它只会自己运行squads,并将squads的值返回给那个程序
看起来小队跑了两次,而我的外环打印“iter one done”-两次。既然如此,我应该如何设置我的主要?你知道吗
如何工作-
第一个函数squads返回列表列表
第二个函数-goals\u convert\u dash-获取第一个函数(squads)的输出-获取列表列表中的两个元素(从每个列表中),如果有破折号(-),则将其转换为零。
.Third func-goals\u convert\u toint获取goals\u convert\u dash的输出,并将第二列转换为零。
第四个-get_max然后从第二列中获取最大值,并将其与第一列0中的数据一起输出
如果运行正常,我认为输出应该是-
iter 1完成 英超最佳射手是: [“约翰·史密斯”,11]
我当前的输出是-
iter one done
Premier league top goal scorer is:
['John Smith', 11]
iter one done
程序-
import requests
from bs4 import BeautifulSoup
import datetime
from operator import itemgetter
from scrape1_squad_urls import table
base_url = 'https://someurl.com'
# Squad Data
team_table = table()
#team_names = team_urls()
def squads():
strip_team_name = [i.replace('https://www.someurl.com', '') for i in team_table]
full_strip = [i.replace('-squad', '') for i in strip_team_name]
iter = 0
while iter < 1:
tdstrip = []
x = []
tdstripclean = []
for i in team_table:
squad_r = requests.get(i)
# print(squad_r.status_code)
now = datetime.datetime.now()
soup = BeautifulSoup(squad_r.text, 'html.parser')
# div = soup.find('div', {'class': '-bp30-box col span1/1'})
premier_squad_table = premier_squad_soup.find_all('table', {'class': 'table -small no-wrap football-squad-table '})
headings = []
playerurls = []
full_links = []
strip_team_name = [i.replace('https://someurl.com/', '') for i in team_table]
full_strip = [i.replace('-squad', '') for i in strip_team_name]
find_team_name = soup.find('span',{'class': 'swap-text__target'})
for table in premier_squad_table:
table_head = table.find('thead')
head_rows = table_head.find_all('tr')
for item in head_rows:
headers = item.find_all('th')
table_body = table.find('tbody')
rows = table_body.find_all('tr')
for row in rows:
td = row.find_all('td')
x = [x.text.strip() for x in td]
position_teamname = (headers[0].text,find_team_name.text)
x[2]
x.extend(position_teamname)
tdstrip.append(x)
iter = iter + 1
print("iter one done")
return(tdstrip)
# return(newList)
#squads()
def goals_convert_dash():
tdstrip = squads()
indexes = [0,2]
newList = [[each_list[i] for i in indexes ] for each_list in tdstrip ]
for eachlist in newList:
if eachlist[1] == '-':
eachlist[1] = 0
return(newList)
#goals_convert_dash()
#print(newList)
def goals_convert_toint():
converted = goals_convert_dash()
for eachlist in converted:
eachlist[1] = int(eachlist[1])
return(converted)
#goals_convert_toint()
def get_max(lst, i, key_func=None):
if not key_func: key_func = lambda x: x[i]
res = max(lst, key=key_func)
return [res[0], res[i]]
data = goals_convert_toint()
print("Premier league top goal scorer is: ")
print(get_max(data,1, lambda x: int(x[1])))
if __name__ == '__main__':
squads()
# goals_convert_dash()
# goals_convert_toint()
# get_max()
目前没有回答
相关问题 更多 >
编程相关推荐