字符处理模块 python

基本抄袭web.py的处理 

模块有两个处理方法 s输出str,u输出unicode


r"""stropt provides operations for string and unicode operation.

This exports:
  - stropt.s Converts any given object to utf-8 encoded string. 
  - stropt.u Converts any given object to unicode string.


"""

def s(obj, encoding='utf-8'):
    r""" 
    Converts any given object to utf-8 encoded string. 
    
        >>> s('hello')
        'hello'
        >>> s(u'\u1234')
        '\xe1\x88\xb4'
        >>> s(2)
        '2'
    """
    if isinstance(obj, unicode):
        return obj.encode(encoding)
    elif isinstance(obj, str):
        from chardet import detect
        ec = detect(obj)['encoding']
        if ec.lower()[:2] == 'gb' : ec = 'gb18030'
        return obj.decode(ec).encode(encoding)
    elif hasattr(obj, 'next'): # iterator
        return itertools.imap(s, obj)
    else:
        return str(obj)



def u(obj, encoding='utf-8'):
    r"""
    Converts any given object to unicode string.
    
        >>> u('hello')
        u'hello'
        >>> u(2)
        u'2'
        >>> u('\xe1\x88\xb4')
        u'\u1234'
    """
    t = type(obj)
    if t is unicode:
        return obj
    elif t is str:
        from chardet import detect
        ec = detect(obj)['encoding']
        if ec.lower()[:2] == 'gb' : ec = 'gb18030'
        return obj.decode(ec)
    elif t in [int, float, bool]:
        return unicode(obj)
    elif hasattr(obj, '__unicode__') or isinstance(obj, unicode):
        return unicode(obj)
    else:
        return str(obj).decode(encoding)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值