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
解决方案:
一般程序员:
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
相关文章推荐
- Python Cookbook 第二版 汉化版 [Recipe 1.3] 测试一个对象是否为 String-like 对象
- Python Cookbook 第二版 汉化版 [Recipe 1.3] 测试一个对象是否为 String-like 对象
- python cookbook 学习笔记 -- 1.8 检查字符串中是否包含某字符集合中的字符
- python cookbook 学习笔记 -- 1.7 将字符串逐字符或逐词反转
- 玩转python之测试一个对象是否是类字符串
- python cookbook第三版学习笔记三:列表以及字符串
- python cookbook 学习笔记 -- 1.1一次处理一个字符
- python cookbook 学习笔记 -- 1.6 合并字符串
- python cookbook第三版学习笔记十二:类和对象(三)创建新的类或实例属性
- 001_003 Python 测试一个对象是否是类字符串
- python cookbook第三版学习笔记十:类和对象(一)
- python cookbook 学习笔记 -- 1.4 字符串对齐
- python cookbook 学习笔记 -- 1.5 去除字符串两端空格
- python cookbook第三版学习笔记十四:类和对象(五)代理类以及内存回收
- python cookbook第三版学习笔记四:文本以及字符串令牌解析
- python cookbook第三版学习笔记十一:类和对象(二)调用父类的方法
- python cookbook第三版学习笔记五:datetime
- python cookbook第三版学习笔记十五:property和描述
- python cookbook第三版学习笔记十八:可由用户修改的装饰器
- 学习笔记之Python 切片:利用切片操作,实现一个trim()函数,去除字符串首尾的空格