在Python中从SIPURI解析电话号码

在Python中从SIPURI解析电话号码,python,parsing,sip,Python,Parsing,Sip,urlparse是用于此的正确模块,还是我们有其他模块 >>> o = urlparse.urlparse('"User Name" <sips:+msisdn@domain?Accept-Contact=+sip.instance="<urn:uuid:2e7671fd-31dd-1393-dkd6-835fe09f314f>";require;explicit>', scheme='sips') >>> print o ParseR

urlparse
是用于此的正确模块,还是我们有其他模块

>>> o = urlparse.urlparse('"User Name" <sips:+msisdn@domain?Accept-Contact=+sip.instance="<urn:uuid:2e7671fd-31dd-1393-dkd6-835fe09f314f>";require;explicit>', scheme='sips')
>>> print o
ParseResult(scheme='sips', netloc='', path='"User Name" <sips:+msisdn@domain', params='', query='Accept-Contact=+sip.instance="<urn:uuid:2e7671fd-31dd-1393-dkd6-835fe09f314f>";require;explicit>', fragment='')
>>> 
>o=urlparse.urlparse('User Name',scheme='sips'))
>>>打印o
ParseResult(scheme='sips',netloc='',path=''User Name',fragment='')
>>> 

我期望
+msisdn@domain
位于
netloc
path
,但
path
中的值有点奇怪。

您可以看看这是如何在其他LIB中实现的,例如在twisted中:
您不是在解析SIPS URI,而是在解析记录地址(AOR)。如果从AOR中提取URI,您将得到:

>>> o = urlparse.urlparse('sips:+msisdn@domain?Accept-Contact=+sip.instance="<urn:uuid:2e7671fd-31dd-1393-dkd6-835fe09f314f>";require;explicit')
>>> print o
ParseResult(scheme='sips', netloc='', path='+msisdn@domain', params='', query='Accept-Contact=+sip.instance="<urn:uuid:2e7671fd-31dd-1393-dkd6-835fe09f314f>";require;explicit', fragment='')
o=urlparse.urlparse('sips:+msisdn@domain?接受联系人=+sip.instance=“”;要求;显式“) >>>打印o ParseResult(scheme='sips',netloc='',path='s+msisdn@domain,params='',query='Accept-Contact=+sip.instance=“”;require;explicit',fragment='') 根据〈代码〉userinfo@hostSIPS URI的一部分应该进入
路径
组件,因此这里的结果是正确的