文本处理 - 测试一个对象是否是类字符串
类字符串表示除了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
这样就可保证万无一失了