#!/usr/bin/env python # -*- coding: utf-8 -*- # """ 兼容Python版本 """ import sys is_py2 = (sys.version_info[0] == 2) is_py3 = (sys.version_info[0] == 3) try: import simplejson as json except (ImportError, SyntaxError): import json if is_py2: 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: 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