亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? urlparse.py

?? mallet是自然語言處理、機器學習領域的一個開源項目。
?? PY
字號:
"""Parse (absolute and relative) URLs.See RFC 1808: "Relative Uniform Resource Locators", by R. Fielding,UC Irvine, June 1995."""__all__ = ["urlparse", "urlunparse", "urljoin", "urldefrag",           "urlsplit", "urlunsplit"]# A classification of schemes ('' means apply by default)uses_relative = ['ftp', 'http', 'gopher', 'nntp', 'wais', 'file',                 'https', 'shttp',                 'prospero', 'rtsp', 'rtspu', '']uses_netloc = ['ftp', 'http', 'gopher', 'nntp', 'telnet', 'wais',               'file',               'https', 'shttp', 'snews',               'prospero', 'rtsp', 'rtspu', '']non_hierarchical = ['gopher', 'hdl', 'mailto', 'news', 'telnet', 'wais',                    'snews', 'sip',                    ]uses_params = ['ftp', 'hdl', 'prospero', 'http',               'https', 'shttp', 'rtsp', 'rtspu', 'sip',               '']uses_query = ['http', 'wais',              'https', 'shttp',              'gopher', 'rtsp', 'rtspu', 'sip',              '']uses_fragment = ['ftp', 'hdl', 'http', 'gopher', 'news', 'nntp', 'wais',                 'https', 'shttp', 'snews',                 'file', 'prospero', '']# Characters valid in scheme namesscheme_chars = ('abcdefghijklmnopqrstuvwxyz'                'ABCDEFGHIJKLMNOPQRSTUVWXYZ'                '0123456789'                '+-.')MAX_CACHE_SIZE = 20_parse_cache = {}def clear_cache():    """Clear the parse cache."""    global _parse_cache    _parse_cache = {}def urlparse(url, scheme='', allow_fragments=1):    """Parse a URL into 6 components:    <scheme>://<netloc>/<path>;<params>?<query>#<fragment>    Return a 6-tuple: (scheme, netloc, path, params, query, fragment).    Note that we don't break the components up in smaller bits    (e.g. netloc is a single string) and we don't expand % escapes."""    tuple = urlsplit(url, scheme, allow_fragments)    scheme, netloc, url, query, fragment = tuple    if scheme in uses_params and ';' in url:        url, params = _splitparams(url)    else:        params = ''    return scheme, netloc, url, params, query, fragmentdef _splitparams(url):    if '/'  in url:        i = url.find(';', url.rfind('/'))        if i < 0:            return url, ''    else:        i = url.find(';')    return url[:i], url[i+1:]def urlsplit(url, scheme='', allow_fragments=1):    """Parse a URL into 5 components:    <scheme>://<netloc>/<path>?<query>#<fragment>    Return a 5-tuple: (scheme, netloc, path, query, fragment).    Note that we don't break the components up in smaller bits    (e.g. netloc is a single string) and we don't expand % escapes."""    key = url, scheme, allow_fragments    cached = _parse_cache.get(key, None)    if cached:        return cached    if len(_parse_cache) >= MAX_CACHE_SIZE: # avoid runaway growth        clear_cache()    netloc = query = fragment = ''    i = url.find(':')    if i > 0:        if url[:i] == 'http': # optimize the common case            scheme = url[:i].lower()            url = url[i+1:]            if url[:2] == '//':                i = url.find('/', 2)                if i < 0:                    i = url.find('#')                    if i < 0:                        i = len(url)                netloc = url[2:i]                url = url[i:]            if allow_fragments and '#' in url:                url, fragment = url.split('#', 1)            if '?' in url:                url, query = url.split('?', 1)            tuple = scheme, netloc, url, query, fragment            _parse_cache[key] = tuple            return tuple        for c in url[:i]:            if c not in scheme_chars:                break        else:            scheme, url = url[:i].lower(), url[i+1:]    if scheme in uses_netloc:        if url[:2] == '//':            i = url.find('/', 2)            if i < 0:                i = len(url)            netloc, url = url[2:i], url[i:]    if allow_fragments and scheme in uses_fragment and '#' in url:        url, fragment = url.split('#', 1)    if scheme in uses_query and '?' in url:        url, query = url.split('?', 1)    tuple = scheme, netloc, url, query, fragment    _parse_cache[key] = tuple    return tupledef urlunparse((scheme, netloc, url, params, query, fragment)):    """Put a parsed URL back together again.  This may result in a    slightly different, but equivalent URL, if the URL that was parsed    originally had redundant delimiters, e.g. a ? with an empty query    (the draft states that these are equivalent)."""    if params:        url = "%s;%s" % (url, params)    return urlunsplit((scheme, netloc, url, query, fragment))def urlunsplit((scheme, netloc, url, query, fragment)):    if netloc or (scheme and scheme in uses_netloc and url[:2] != '//'):        if url and url[:1] != '/': url = '/' + url        url = '//' + (netloc or '') + url    if scheme:        url = scheme + ':' + url    if query:        url = url + '?' + query    if fragment:        url = url + '#' + fragment    return urldef urljoin(base, url, allow_fragments = 1):    """Join a base URL and a possibly relative URL to form an absolute    interpretation of the latter."""    if not base:        return url    if not url:        return base    bscheme, bnetloc, bpath, bparams, bquery, bfragment = \            urlparse(base, '', allow_fragments)    scheme, netloc, path, params, query, fragment = \            urlparse(url, bscheme, allow_fragments)    if scheme != bscheme or scheme not in uses_relative:        return url    if scheme in uses_netloc:        if netloc:            return urlunparse((scheme, netloc, path,                               params, query, fragment))        netloc = bnetloc    if path[:1] == '/':        return urlunparse((scheme, netloc, path,                           params, query, fragment))    if not path:        if not params:            params = bparams            if not query:                query = bquery        return urlunparse((scheme, netloc, bpath,                           params, query, fragment))    segments = bpath.split('/')[:-1] + path.split('/')    # XXX The stuff below is bogus in various ways...    if segments[-1] == '.':        segments[-1] = ''    while '.' in segments:        segments.remove('.')    while 1:        i = 1        n = len(segments) - 1        while i < n:            if (segments[i] == '..'                and segments[i-1] not in ('', '..')):                del segments[i-1:i+1]                break            i = i+1        else:            break    if segments == ['', '..']:        segments[-1] = ''    elif len(segments) >= 2 and segments[-1] == '..':        segments[-2:] = ['']    return urlunparse((scheme, netloc, '/'.join(segments),                       params, query, fragment))def urldefrag(url):    """Removes any existing fragment from URL.    Returns a tuple of the defragmented URL and the fragment.  If    the URL contained no fragments, the second element is the    empty string.    """    if '#' in url:        s, n, p, a, q, frag = urlparse(url)        defrag = urlunparse((s, n, p, a, q, ''))        return defrag, frag    else:        return url, ''test_input = """      http://a/b/c/d      g:h        = <URL:g:h>      http:g     = <URL:http://a/b/c/g>      http:      = <URL:http://a/b/c/d>      g          = <URL:http://a/b/c/g>      ./g        = <URL:http://a/b/c/g>      g/         = <URL:http://a/b/c/g/>      /g         = <URL:http://a/g>      //g        = <URL:http://g>      ?y         = <URL:http://a/b/c/d?y>      g?y        = <URL:http://a/b/c/g?y>      g?y/./x    = <URL:http://a/b/c/g?y/./x>      .          = <URL:http://a/b/c/>      ./         = <URL:http://a/b/c/>      ..         = <URL:http://a/b/>      ../        = <URL:http://a/b/>      ../g       = <URL:http://a/b/g>      ../..      = <URL:http://a/>      ../../g    = <URL:http://a/g>      ../../../g = <URL:http://a/../g>      ./../g     = <URL:http://a/b/g>      ./g/.      = <URL:http://a/b/c/g/>      /./g       = <URL:http://a/./g>      g/./h      = <URL:http://a/b/c/g/h>      g/../h     = <URL:http://a/b/c/h>      http:g     = <URL:http://a/b/c/g>      http:      = <URL:http://a/b/c/d>      http:?y         = <URL:http://a/b/c/d?y>      http:g?y        = <URL:http://a/b/c/g?y>      http:g?y/./x    = <URL:http://a/b/c/g?y/./x>"""# XXX The result for //g is actually http://g/; is this a problem?def test():    import sys    base = ''    if sys.argv[1:]:        fn = sys.argv[1]        if fn == '-':            fp = sys.stdin        else:            fp = open(fn)    else:        import StringIO        fp = StringIO.StringIO(test_input)    while 1:        line = fp.readline()        if not line: break        words = line.split()        if not words:            continue        url = words[0]        parts = urlparse(url)        print '%-10s : %s' % (url, parts)        abs = urljoin(base, url)        if not base:            base = abs        wrapped = '<URL:%s>' % abs        print '%-10s = %s' % (url, wrapped)        if len(words) == 3 and words[1] == '=':            if wrapped != words[2]:                print 'EXPECTED', words[2], '!!!!!!!!!!'if __name__ == '__main__':    test()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产电影一区二区三区| 在线综合视频播放| 精品视频一区二区三区免费| 久久综合色婷婷| 亚洲高清免费视频| 国产精品亚洲视频| 日韩色视频在线观看| 一区二区三区精品视频| 国产成人a级片| 欧美tk—视频vk| 性感美女久久精品| 在线中文字幕一区二区| 国产精品久久久久aaaa樱花 | 欧美极品aⅴ影院| 日韩精品国产精品| 欧美三级电影一区| 亚洲精品欧美在线| 成人中文字幕在线| 久久久精品人体av艺术| 国内精品久久久久影院薰衣草| 欧美日韩精品一区二区在线播放| 国产精品高潮呻吟| 国产成人一区二区精品非洲| 久久色在线视频| 久草这里只有精品视频| 日韩美女主播在线视频一区二区三区| 亚洲综合成人在线视频| 欧美在线视频不卡| 亚洲一区欧美一区| 欧美专区在线观看一区| 亚洲美女电影在线| 91天堂素人约啪| 亚洲精品免费在线播放| 色哟哟在线观看一区二区三区| 中文字幕一区二区三区在线播放| 成人免费高清在线| 亚洲欧美综合色| 99久久久精品免费观看国产蜜| 国产精品视频第一区| 成人福利视频在线| 亚洲精品日韩一| 欧美性一级生活| 日欧美一区二区| 精品国产制服丝袜高跟| 国产精品一区二区久久不卡| 亚洲国产精品国自产拍av| 成人一区二区视频| 一区二区视频免费在线观看| 欧美日韩一本到| 久久国产免费看| 午夜亚洲福利老司机| 欧美日韩一级黄| 蜜桃久久久久久久| 国产精品你懂的| 91国偷自产一区二区使用方法| 亚洲成人激情av| 久久久久久久综合| 91丨porny丨户外露出| 亚洲福利一区二区三区| 日韩欧美久久久| 成人免费毛片app| 亚洲成人综合在线| 国产三级精品三级在线专区| 91蝌蚪porny成人天涯| 蜜桃av一区二区三区电影| 久久青草国产手机看片福利盒子| 97se亚洲国产综合自在线| 五月天激情综合| 亚洲国产精品精华液ab| 欧美绝品在线观看成人午夜影视| 激情五月婷婷综合| 一区二区欧美国产| 久久亚洲精品小早川怜子| 在线精品视频免费观看| 国内精品国产成人| 一区二区三区在线视频观看| 欧美mv和日韩mv的网站| 欧美在线一区二区三区| 国产河南妇女毛片精品久久久| 亚洲色大成网站www久久九九| 91精品国产91热久久久做人人| 成人久久久精品乱码一区二区三区| 午夜精品一区在线观看| 国产日本欧洲亚洲| 制服.丝袜.亚洲.中文.综合| 91网上在线视频| 国产精品乡下勾搭老头1| 亚洲成国产人片在线观看| 国产精品久久久久一区二区三区共| 8x8x8国产精品| 欧美性大战xxxxx久久久| av网站免费线看精品| 国产毛片精品国产一区二区三区| 亚洲一区日韩精品中文字幕| 日本一区中文字幕| 亚洲欧美日韩国产综合在线| 久久久久88色偷偷免费| 欧美刺激午夜性久久久久久久| 欧美性色黄大片手机版| av爱爱亚洲一区| 成人中文字幕合集| 粉嫩13p一区二区三区| 国产一区二区三区在线观看免费视频| 午夜精品福利一区二区蜜股av| 亚洲精品国产一区二区精华液| 国产精品婷婷午夜在线观看| 久久久另类综合| 久久久久国产精品麻豆| 国产视频一区二区在线观看| 久久这里只有精品6| 欧美mv日韩mv亚洲| 精品91自产拍在线观看一区| 亚洲精品在线观看视频| 日韩精品中文字幕一区二区三区 | 午夜亚洲国产au精品一区二区| 国产精品久久久久久一区二区三区 | 玉米视频成人免费看| 亚洲欧美在线另类| 亚洲精选一二三| 一区二区三区在线视频免费| 亚洲观看高清完整版在线观看| 亚洲精品日韩综合观看成人91| 国产精品久久久久久久久果冻传媒 | av电影在线观看完整版一区二区| 国产**成人网毛片九色| 国产很黄免费观看久久| 国产综合成人久久大片91| 国产精品亚洲专一区二区三区 | 欧美一级高清片| 欧美xxxx老人做受| 国产午夜精品久久久久久久 | 亚洲综合一区在线| 午夜视黄欧洲亚洲| 久久精品国产澳门| 国产成人免费视频网站| 91浏览器入口在线观看| 欧美色电影在线| 欧美大片日本大片免费观看| 国产日韩高清在线| 亚洲视频香蕉人妖| 91在线观看成人| 亚洲乱码国产乱码精品精98午夜 | 欧美视频中文一区二区三区在线观看| 成人网在线播放| 一本到不卡精品视频在线观看| 欧美日韩不卡一区二区| 欧美电视剧在线看免费| 中文字幕视频一区| 免费在线视频一区| 99热这里都是精品| 538prom精品视频线放| 国产日韩av一区二区| 亚洲国产成人av| 国产999精品久久| 欧美日韩一级黄| 国产精品美女久久久久av爽李琼 | caoporn国产一区二区| www.一区二区| 欧美一级一级性生活免费录像| 国产亚洲精品超碰| 亚洲国产日韩综合久久精品| 国产做a爰片久久毛片| 欧美日韩在线播放一区| 国产亚洲精品超碰| 日本女优在线视频一区二区| 99精品欧美一区二区三区综合在线| 91精品免费在线观看| 亚洲欧洲性图库| 久久99在线观看| 欧美亚洲国产一区二区三区 | 91女人视频在线观看| 日韩一区二区三区精品视频| 亚洲欧洲中文日韩久久av乱码| 国产综合色精品一区二区三区| 国产精品乱码久久久久久| 日本一不卡视频| 欧美视频一二三区| 亚洲视频 欧洲视频| 国产一区二区精品久久91| 欧美精品三级在线观看| 亚洲精品欧美综合四区| gogogo免费视频观看亚洲一| 精品国产成人系列| 日韩高清不卡在线| 欧美日韩精品欧美日韩精品一| 最近日韩中文字幕| 国产69精品久久99不卡| 久久精品一区二区三区不卡| 另类小说欧美激情| 欧美一区二区在线播放| 天堂av在线一区| 欧美日韩一区二区三区四区| 亚洲激情欧美激情| 日本精品免费观看高清观看| 日韩理论片一区二区| 波多野结衣的一区二区三区| 中文字幕在线观看一区| 99久久精品一区| 一区二区三区在线视频免费 | 国产麻豆91精品|