Python:如何检查字符串是否是有效的IRI?

Edu*_*scu 14 python url urlparse python-2.7

是否有标准功能来检查IRI,检查URL显然我可以使用:

parts = urlparse.urlsplit(url)  
    if not parts.scheme or not parts.netloc:  
        '''apparently not an url'''
Run Code Online (Sandbox Code Playgroud)

我使用包含Unicode字符的URL尝试了上述内容:

import urlparse
url = "http://fdasdf.fdsfî??îs.fss/?î?î"
parts = urlparse.urlsplit(url)
if not parts.scheme or not parts.netloc:  
    print "not an url"
else:
    print "yes an url"
Run Code Online (Sandbox Code Playgroud)

而我得到的是yes an url.这是否意味着我对这个有效IRI的测试很好?还有另外一种方法吗?

Mar*_*ers 19

使用urlparse不足以测试有效的IRI.

改为使用rfc3987:

from rfc3987 import parse

parse('http://fdasdf.fdsfî??îs.fss/?î?î', rule='IRI')
Run Code Online (Sandbox Code Playgroud)

  • `ImportError:没有名为rfc3987`的模块,所以它不是标准的,`pip install rfc3987` (3认同)