文本处理 - 测试一个对象是否是类字符串

类字符串表示除了str,unicode等内建字符串类外还包括用户自己编写的str,unicode的子类,用户自定的行为表现类似于字符串的类型

使用内建函数isinstance判断:

1 >>> user = 'uzero'
2 >>> isinstance(user, basestring)
3 True

basestring是str和unicode共同的基类,所以这个测试对str,unicode都是有效的.当对用户自定义的字符串类型进行测试时,只要自定义的字符串类型是str,unicode或者basestring的子类,测试同样是有效的,但是对用户自定的行为表现类似于字符串的类型,测试会无效,例如python标准库中的UserString对象是非常明显的字符串类型但它不是str,unicode或者basestring的子类。这种情况可以检查对象的行为是否像一个字符串,比如字符串的拼接特性:

1 def isStringLike(anobj):
2     try:
3         anobj + ''
4     except:
5         return False
6     else:
7         return True

更进一步,利用字符可以转换大小的特性:

1 def isStringLike(anobj):
2     try:
3         anobj.lower() + ''
4     except:
5         return False
6     else:
7         return True

这样就可保证万无一失了

 

 

posted @ 2013-01-22 14:47  uzero  阅读(162)  评论(0编辑  收藏  举报