Python:如何检查字符串是否是有效的IRI?
是否有一个标准的函数来检查一个,检查一个我可以使用的URL:Python:如何检查字符串是否是有效的IRI?,python,url,python-2.7,urlparse,Python,Url,Python 2.7,Urlparse,是否有一个标准的函数来检查一个,检查一个我可以使用的URL: parts = urlparse.urlsplit(url) if not parts.scheme or not parts.netloc: '''apparently not an url''' 我使用包含Unicode字符的URL尝试了上述操作: import urlparse url = "http://fdasdf.fdsfîășîs.fss/ăîăî" parts = urlparse.u
parts = urlparse.urlsplit(url)
if not parts.scheme or not parts.netloc:
'''apparently not an url'''
我使用包含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"
我得到的是
是一个url
。这是否意味着我对有效的IRI测试很好?还有别的办法吗 中唯一的字符集敏感代码要求方案仅包含ASCII字母、数字和[+-.]字符;否则它是完全不可知的,因此可以很好地处理非ASCII字符
既然如此,您有责任检查它是否继续是这种情况(在您的项目中进行测试),但我不认为它会被更改为破坏IRIs
urllib提供了将IRIs转换为ASCII URI或从ASCII URI转换为ASCII URI的功能,尽管它们在文档中仍然没有明确提及IRIs,并且在某些情况下会被破坏:使用
URLPRASE
不足以测试有效的IRI
请使用以下选项:
你为什么不好好做呢?您的示例是否违反了IRI标准定义的任何规则?换句话说:你是在问我们你的测试是否违反了IRI规则?你自己做过这项研究吗?@Jan PhilipGehrcke我在问一个比我更有IRI经验的人,我是否擅长这项研究。
ImportError:没有名为rfc3987的模块
,因此它不是标准,pip install rfc3987
你必须安装他链接到Works(+1)的软件包,接受,您是对的:使用urlparse不足以测试有效的IRI
,因为使用上面提供的代码url
字符串不是有效的IRI。但是转义有效:parse()http://fdasdf.fdsf%C3%AE%C4%83%C8%99%C3%AEs.com/%C4%83%C3%AE%C4%83%C3%AE“,rule='IRI')
我得到:{'fragment':无,'path':'/%C4%83%C3%AE%C4%83%C3%AE','scheme':'http','authority':'fdasdf.fdsf%C3%AE%C4%83%C8%99%C3%AEs.com','query':无}
我只希望更多的人在谷歌搜索时能找到这个答案。urllib.quote(url)
似乎从http://
中的:
冒号转义到http%3A//
@EduardFlorinescu是的,默认情况下,它只适用于引用IRI的路径部分;对于完整的IRI,您需要解析、引用和重新组装组件。
from rfc3987 import parse
parse('http://fdasdf.fdsfîășîs.fss/ăîăî', rule='IRI')