# -*- coding: utf-8 -*- """ 兼容Python版本 """ import sys is_py2 = (sys.version_info[0] == 2) is_py3 = (sys.version_info[0] == 3) is_py33 = (sys.version_info[0] == 3 and sys.version_info[1] == 3) try: import simplejson as json except (ImportError, SyntaxError): import json if is_py2: from urllib import quote as urlquote, unquote as urlunquote from urlparse import urlparse def to_bytes(data): """若輸入為unicode, 則轉為utf-8編碼的bytes;其他則原樣返回。""" if isinstance(data, unicode): return data.encode('utf-8') else: return data def to_string(data): """把輸入轉換為str對象""" return to_bytes(data) def to_unicode(data): """把輸入轉換為unicode,要求輸入是unicode或者utf-8編碼的bytes。""" if isinstance(data, bytes): return data.decode('utf-8') else: return data def stringify(input): if isinstance(input, dict): return dict([(stringify(key), stringify(value)) for key,value in input.iteritems()]) elif isinstance(input, list): return [stringify(element) for element in input] elif isinstance(input, unicode): return input.encode('utf-8') else: return input builtin_str = str bytes = str str = unicode elif is_py3: from urllib.parse import quote as urlquote, unquote as urlunquote from urllib.parse import urlparse def to_bytes(data): """若輸入為str(即unicode),則轉為utf-8編碼的bytes;其他則原樣返回""" if isinstance(data, str): return data.encode(encoding='utf-8') else: return data def to_string(data): """若輸入為bytes,則認為是utf-8編碼,並返回str""" if isinstance(data, bytes): return data.decode('utf-8') else: return data def to_unicode(data): """把輸入轉換為unicode,要求輸入是unicode或者utf-8編碼的bytes。""" return to_string(data) def stringify(input): return input builtin_str = str bytes = bytes str = str