2024-10-05 11:25:29 发布
网友
如何用vobject检查字符串是否有效vcard?在
try-and-catch是否有其他方法或generall方法?在
目前我的做法如下:
try: vobj = vobject.readOne(vcard_readable) except Exception as e: error_message = { "valid": False, "reason": "Invalid vCard\n{0}".format(e)}
如何使用VOBJECT处理unicode?
您当前的代码运行良好,但通常您不希望捕获Exception,因为这会掩盖代码中的其他错误。例如,如果我把你的代码片段放在一个文件中,然后运行它……即使我没有导入vobject模块,我也不会收到错误消息。这是因为该代码实际上引发了NameError:
Exception
vobject
NameError
Traceback (most recent call last): File "foo.py", line 2, in <module> vobj = vobject.readOne(vcard_readable) NameError: name 'vobject' is not defined
但是因为你捕捉到了所有的异常,所以你把它藏起来了。一种更好的技术是只捕获您期望从vobject模块接收的特定异常,并让其他异常正常渗透。在
对于vobject,它引发的所有异常都将是vobject.base.VObjectError的子类,因此以下代码就足够了:
vobject.base.VObjectError
vcard = put.get('vcard') try: vcard_readable = base64.decodestring(vcard) quoted_printable_vcard = quopri.encodestring(vcard_readable) vobj = vobject.readOne(quoted_printable_vcard) except UnicodeEncodeError as e: # case of bad encoding error_message = { "valid": False, "reason": "Invalid vCard\n{0}".format(e)} return HttpResponse(json.dumps(error_message), status=200) except vobject.base.VObjectError as e2: # case of invalid vcard error_message = { "valid": False, "reason": "Invalid vCard format\n{0}".format(e2)} return HttpResponse(json.dumps(error_message), status=200) except: error_message = { "valid": False, "reason": "Invalid vCard."} return HttpResponse(json.dumps(error_message), status=200)
好吧。我解决了。对于vobject要使用UNICODE(UTF-8),需要使用:
quoted printable encoding.-示例如下:
quoted printable encoding.
您当前的代码运行良好,但通常您不希望捕获
Exception
,因为这会掩盖代码中的其他错误。例如,如果我把你的代码片段放在一个文件中,然后运行它……即使我没有导入vobject
模块,我也不会收到错误消息。这是因为该代码实际上引发了NameError
:但是因为你捕捉到了所有的异常,所以你把它藏起来了。一种更好的技术是只捕获您期望从
vobject
模块接收的特定异常,并让其他异常正常渗透。在对于
^{pr2}$vobject
,它引发的所有异常都将是vobject.base.VObjectError
的子类,因此以下代码就足够了:好吧。我解决了。对于
vobject
要使用UNICODE(UTF-8),需要使用:
^{pr2}$quoted printable encoding.
-示例如下:相关问题 更多 >
编程相关推荐