python Try Exception写错了?
本帖最后由 double07 于 2021-5-10 09:38 编辑直入主题,上代码,请问这样错在哪里,怎样修改?import chardet
import requests
from bs4 import BeautifulSoup
import re
response = requests.get("https://itemcdn.tmall.com/desc/icoss37757230056cf740963d9fe136?var=desc")
encodingInfo = chardet.detect(response.content)
r_response = response.content.decode(encodingInfo['encoding'], 'ignore')
a = response.text.strip('var desc=')
soup = BeautifulSoup(a, features="lxml")
lst = []
for l in soup.find_all('span'):
if l.text != '\xa0':
lst.append(l.text)
concat="".join(lst) #合并列表字符串
try:
use_righ = re.findall(r'出让', concat)# 土地类型
except Exception as e:
print(str(e), "执行B计划,取划拨")
use_righ = re.findall(r'划拨', concat)# 土地类型
except Exception as e:
print(str(e), "执行C计划,取集体")
use_righ = re.findall(r'集体', concat)# 土地类型
except Exception as e:
print(str(e), "执行D计划,取转让")
use_righ = re.findall(r'转让', concat)# 土地类型
except Exception as e:
print(str(e), "非出让")
use_righ = ' '
print(use_righ) 按照你希望的逻辑来说,你需要在except中不断套try语句 捕获到异常了啊,没查找到'出让' py不是很懂,但是我估计你是第一次没找到 就 执行B计划,第二次没找到就执行C计划,但是 你这只有第一句补货到了异常然后处理掉了,后面的处理只是说对异常的不同处理方法.想要解决,应该是嵌套 try exception
不然就是对不同的报错进行执行不同的计划,但是捕获的异常都是同一个,就没有用了 本帖最后由 涛之雨 于 2021-5-9 23:56 编辑
正确的用法是先判断findall的长度是不是0,如果不是0的话再去取内容
异常捕捉最好少使用,多判断 本帖最后由 ligxi 于 2021-5-10 10:30 编辑
Exception捕获的是所有可能出现的异常并处理,只能用一次,多次定义是没效果的。
Python try捕获的异常不能是同种类型吧。这样他会出bad Except clauses order的警告。
可以这么写(多个except捕获不同类型的异常):
try:
a = int(input('请输入一个被除数'))
b = int(input('请输入除数'))
c = float(a)/float(b)
print(c)
except ZeroDivisionError:
print('异常,被除数不能为零')
except ValueError:
print('异常,不能输入字符串!')
except NameError:
print('异常,变量不存在!')
except BaseException as e:
print(e)
可以这么写(一个except捕获不同类型的异常):
使用except而带多种异常类型
你也可以使用相同的except语句来处理多个异常信息,如下所示:
try:
正常的操作
......................
except(Exception1[, Exception2[,...ExceptionN]]]):
发生以上多个异常中的一个,执行这块代码
......................
else:
如果没有异常执行这块代码
Loker 发表于 2021-5-10 08:33
Python try捕获的异常不能是同种类型吧。这样他会出bad Except clauses order的警告。
可以这么写(多个ex ...
谢谢,第一种不错,但我这代码是同类型异常,第二段代码可以,但达不到我要的效果 except Exception as e:是捕获所有,所以你出现异常只会走第一个 double07 发表于 2021-5-10 09:18
谢谢,第一种不错,但我这代码是同类型异常,第二段代码可以,但达不到我要的效果
既然是同类型的异常,那你只需要except一次就行了吧,然后再except里边做if判断呢?
页:
[1]
2