【发布时间】:2013-07-06 17:45:40
【问题描述】:
@martineau 我更新了我的代码,这是你的意思吗?我如何处理 KeyError 而不是 NameError ?
url = "http://app2.nea.gov.sg/anti-pollution-radiation-protection/air-pollution/psi/psi-readings-over-the-last-24-hours"
web_soup = soup(urllib2.urlopen(url))
table = web_soup.find(name="div", attrs={'class': 'c1'}).find_all(name="div")[4].find_all('table')[0]
data = {}
cur_time = datetime.datetime.strptime("12AM", "%I%p")
for tr_index, tr in enumerate(table.find_all('tr')):
if 'Time' in tr.text:
continue
for td_index, td in enumerate(tr.find_all('td')):
if not td_index:
continue
data[cur_time] = td.text.strip()
if td.find('strong'):
bold_time = cur_time
data[bold_time] = '20'
cur_time += datetime.timedelta(hours=1)
default_value = '20' # whatever you want it to be
try:
bold = data[bold_time]
except NameError:
bold_time = beforebold = beforebeforebold = default_value
# might want to set "bold" to something, too, if needed
else:
beforebold = data.get(bold_time - datetime.timedelta(hours=1))
beforebeforebold = data.get(bold_time - datetime.timedelta(hours=2))
这是我打印数据以进行计算的地方。
print bold
print beforebold
print beforebeforebold
【问题讨论】:
-
如果
bold = data[bold_time]语句引发NameError,bold应该有什么值? -
bold = data[bold_time] 应该有网站app2.nea.gov.sg/anti-pollution-radiation-protection/…中strong这个词的值@
-
是的,但是如果没有找到 strong 一词,您希望将
bold设置为什么 - 在这种情况下它的默认值应该是什么?这需要知道在发生这种情况时将beforebold和beforebeforebold设置为什么。 -
“强”这个词在网站上肯定有,因此我想获得它的价值并替换为 beforebold 和 beforebeforebold。有什么想法吗?
-
我已经删除了我的答案,因为你不知道你想在这里做什么。
标签: python exception exception-handling