较短的尝试除了阻止许多变量
Shorter try except block for many vars
我正在从不同的网址中解析一些内容。并非所有网址都具有相同的结构,因此某些网址的代码会失败,所以我想出的代码是这样的(简化版):
meta_dict = {}
try:
meta_dict['date_published'] = html.find('date'}).text
except:
meta_dict['date_published'] = ''
try:
meta_dict['headline'] = html.find('headline').text
except:
meta_dict['headline']
try:
meta_dict['description'] = html.find('description').text
except:
meta_dict['description']
return meta_dict
这是一个简化的块,但我们的想法是尝试获取超过 50 个变量并为每个变量做一个 try
except
块在代码也是。
我知道我可以为它创建一个函数,如果它失败了,return ''
,但我想知道是否有另一种方法来处理这种情况。
如果您正在检查的这些变量的列表是常量,您可以将它们放入一个列表中,然后迭代该列表。
vars = [date_publis, hedheadline, description, . . . ]
for var in vars:
try:
meta_dict[var] = html.find(var}).text
except:
meta_dict[var] = ''
l = [('date_published', 'date'), ('headline', 'headline'), ('description', 'description')]
for dict_val, html_val in l:
try:
meta_dict[dict_val] = html.find(html_val).text
except:
meta_dict[dict_val] = ''
我正在从不同的网址中解析一些内容。并非所有网址都具有相同的结构,因此某些网址的代码会失败,所以我想出的代码是这样的(简化版):
meta_dict = {}
try:
meta_dict['date_published'] = html.find('date'}).text
except:
meta_dict['date_published'] = ''
try:
meta_dict['headline'] = html.find('headline').text
except:
meta_dict['headline']
try:
meta_dict['description'] = html.find('description').text
except:
meta_dict['description']
return meta_dict
这是一个简化的块,但我们的想法是尝试获取超过 50 个变量并为每个变量做一个 try
except
块在代码也是。
我知道我可以为它创建一个函数,如果它失败了,return ''
,但我想知道是否有另一种方法来处理这种情况。
如果您正在检查的这些变量的列表是常量,您可以将它们放入一个列表中,然后迭代该列表。
vars = [date_publis, hedheadline, description, . . . ]
for var in vars:
try:
meta_dict[var] = html.find(var}).text
except:
meta_dict[var] = ''
l = [('date_published', 'date'), ('headline', 'headline'), ('description', 'description')]
for dict_val, html_val in l:
try:
meta_dict[dict_val] = html.find(html_val).text
except:
meta_dict[dict_val] = ''