python cookbook 学习笔记 -- 1.3 测试一个对象是否是类字符串

任务:测试一个对象,是否是一个字符串,更准确说是这个对象是否具有类字符串的行为模式

解决方案:

一般程序员:

    def isExactlyAstring(anobj):

        return type(anobj) is type('')

    这个方法并不是非常可用,unicode对象无法通过测试,自己编写的str的子类也不行

较好的方法:

    使用内建的isinstance和basetring来简单快速检查某个对象是否是字符串或者Unicode对象:

    def isAString(anobj):

        return isinstance(anobj,basestring)

    因为basestring是str和unicode类型的共同基类,这符合python的多态机制,但是该方法对标准库中的UserString类的实例并不可用,因为UserString并不是基于basestring派生的

更好的方法:

    def isStringLike(anobj):

        try: anobj+''

        except: return False

        else: return True

    通过看对象anobj是否有类字符串的行为特征来判断他是不是字符串,当然我们也可以添加一些细节,使其更加完美

终极方法:

    def isStringLike(anobj):

        try: anobj.lower() + anobj + ''

        except: return False

        else: return True

这样isStringLike函数的功能基本满足需要了

本节也使用了python的异常处理机制,这个用来检测并处理由于不匹配产生的所有错误和异常。

 

It's easier to ask forgiveness than permission

转载于:https://www.cnblogs.com/rookie-coder/archive/2013/05/19/3086698.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值