(string)
return b''.join(res)
unquote_to_bytes('abc%20def') -> b'abc def'.
unquote_to_bytes('abc%20def') -> b'abc def'.
unquote_to_bytes ( abc%20def ) - > b abc def .
def unquote_to_bytes(string):
    """unquote_to_bytes('abc%20def') -> b'abc def'."""
    # Note: strings are encoded as UTF-8. This is only an issue if it contains
    # unescaped non-ASCII characters, which URIs should not.
    if not string:
        # Is it a string-like object?
        string.split
        return b''
    if isinstance(string, str):
        string = string.encode('utf-8')
    bits = string.split(b'%')
    if len(bits) == 1:
        return string
    res = [bits[0]]
    append = res.append
    # Delay the initialization of the table to not waste memory
    # if the function is never called
    global _hextobyte
    if _hextobyte is None:
        _hextobyte = {(a + b).encode(): bytes.fromhex(a + b)
                      for a in _hexdig for b in _hexdig}
    for item in bits[1:]:
        try:
            append(_hextobyte[item[:2]])
            append(item[2:])
        except KeyError:
            append(b'%')
            append(item)
    return b''.join(res)
def unquote_to_bytes ( string ) : # Note: strings are encoded as UTF-8. This is only an issue if it contains # unescaped non-ASCII characters, which URIs should not. if not string : # Is it a string-like object? string . split return b'' if isinstance ( string , str ) : string = string . encode ( 'utf-8' ) bits = string . split ( b'%' ) if len ( bits ) == 1 : return string res = [ bits [ 0 ] ] append = res . append # Delay the initialization of the table to not waste memory # if the function is never called global _hextobyte if _hextobyte is None : _hextobyte = { ( a + b ) . encode ( ) : bytes . fromhex ( a + b ) for a in _hexdig for b in _hexdig } for item in bits [ 1 : ] : try : append ( _hextobyte [ item [ : 2 ] ] ) append ( item [ 2 : ] ) except KeyError : append ( b'%' ) append ( item ) return b'' . join ( res )