您的位置:首页 > 编程语言 > Python开发

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

2013-05-19 12:30 776 查看
任务:测试一个对象,是否是一个字符串,更准确说是这个对象是否具有类字符串的行为模式

解决方案:

一般程序员:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: