Python 错误“赋值前引用的局部变量“born”
如果您得到了这个错误,这仅仅意味着您调用或试图分配一个不存在的变量 要解决此问题,请在函数定义之前添加born= 作为一种很好的检查方法,您可以给born变量一个默认赋值,就像出了问题一样。或0。然后在函数完成执行之前打印出变量。如果卡在那里,那么您知道问题出在try/excepts中 在for row in rows循环中指定born变量。问题是可能没有行,因此没有天生的赋值Python 错误“赋值前引用的局部变量“born”,python,Python,如果您得到了这个错误,这仅仅意味着您调用或试图分配一个不存在的变量 要解决此问题,请在函数定义之前添加born= 作为一种很好的检查方法,您可以给born变量一个默认赋值,就像出了问题一样。或0。然后在函数完成执行之前打印出变量。如果卡在那里,那么您知道问题出在try/excepts中 在for row in rows循环中指定born变量。问题是可能没有行,因此没有天生的赋值 在此循环之前放置born=False。当代码执行最后一行之前的行时:singer\u band\u info\u d=
在此循环之前放置born=False。当代码执行最后一行之前的行时:singer\u band\u info\u d=dicturl=url,genres=genres,born=born,ya=ya变量born可能尚未初始化,因为您只在一个if案例中处理初始化。没有理由否决这个非常好的问题。您可以添加有关出现错误的特定行的信息
def singers_band_info(url, pagetext):
get_soup = lambda page:BeautifulSoup(page, 'html.parser')
get_rows = lambda soup:soup.find_all("tr")
get_cols = lambda row:row.find_all("th") + row.find_all("td")
get_colstd = lambda row:row.find_all("td")
rows = get_rows(get_soup(pagetext))
for row in rows:
cols = get_cols(row)
colstd = get_colstd(row)
if cols[0].get_text() == "Born":
try:
born = colstd[0].get_text()
born = born[1:11]
except:
born = "False"
if cols[0].get_text() == "Years active":
try:
ya = colstd[0].get_text()
except:
ya = "False"
if cols[0].get_text() == "Genres":
try:
genres = colstd[0].get_text()
except:
genres = "False"
singer_band_info_d = dict(url = url, genres = genres, born = born, ya = ya)
return singer_band_info_d