为什么我不能将ValueError消息与urllib模块中的字符串进行比较?

时间:2015-03-04 05:24:25

标签: error-handling python-3.3

在python3中:

from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
try:
    req = Request("wrong url")
except ValueError as e:
    if e == "unknown url type: 'wrong url'" :print("bad url")

为什么在我的python控制台中没有输出bad url? 无法将ValueError消息与字符串

进行比较

1.想请你告诉我' str(e)'
2.它是"未知的网址类型:'错误的网址'"不是"未知的网址类型:错误的网址" ,我在我的控制台上测试了它。

2 个答案:

答案 0 :(得分:2)

您应首先将其传递给str

if str(e) == "unknown url type: 'wrong url'" :

答案 1 :(得分:1)

您正在将异常对象与字符串进行比较

您应该与str(e)进行比较以获得匹配,例如

from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
try:
    req = Request("wrong url")
except ValueError as e:
    if "unknown url type" in str(e) :
        print("bad url")

该行

if "unknown url type" in str(e) :

考虑python 3.x版本之间返回字符串的差异。