Python检测一个对象是否为字符串类的方法


Posted in Python onMay 21, 2015

目的

测试一个对象是否是字符串

方法

Python的字符串的基类是basestring,包括了str和unicode类型。一般可以采用以下方法:

def isAString(anobj):

return isinstance(anobj,basestring)

不过以上方法对于UserString类的实例,无能无力。

In [30]: b=UserString.UserString('abc')
In [31]: isAString(b)

Out[31]: False
In [32]: type(b)

Out[32]: <class 'UserString.UserString'>

Python中常用的鸭子判断法:如果它走路像鸭子,叫声像鸭子,就可以认为它是鸭子了。

def isStringLike(anobj):
    try:
        anobj.lower() + anobj + ' '
    except:
        return False
    else:
        return True

 测试结果如下:

>>> import UserString

>>> b=UserString.UserString('abc')

>>> isStringLike(b)

True

>>>

关于风格

根据自己的语气去执行任务,在此过程中检测并处理由于不匹配产生的所有错误和异常。这种处理方式称为:

EAFP:It's easier to ask forgiveness than permission.

try/except是保证该风格的关键工具。

八卦一下,关于UserString类

对于2.X版本:Python文档中提到,如果不涉及到2.2以前的版本,请考虑直接使用str类型来代替UserString类型。

对于3.X版本:该模块已经移到collection模块中。

该类主要有两种方法:

class UserString.UserString([sequence])

具体使用前面已经举例,注意可以使用str()转化为str类型

class UserString.MutableString([sequence])

字符串也可以变哦!Look here:
a=UserString.MutableString('abc')

a[0]='c'
In [10]: a

Out[10]: 'cbc'

 
Python文档上有行黑体字,原来已经是弃用的方法,3.0就没有了:
Deprecated since version 2.6: The MutableString class has been removed in Python 3.0.
Python 相关文章推荐
python集合类型用法分析
Apr 08 Python
python检查指定文件是否存在的方法
Jul 06 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
python监控文件并且发送告警邮件
Jun 21 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
基于python 微信小程序之获取已存在模板消息列表
Aug 05 Python
Python实现点云投影到平面显示
Jan 18 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
Feb 07 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
Dec 01 Python
pytest进阶教程之fixture函数详解
Mar 29 Python
详解python的异常捕获
Mar 03 Python
在Python中操作列表之List.pop()方法的使用
May 21 #Python
Python字符和字符值(ASCII或Unicode码值)转换方法
May 21 #Python
Python中每次处理一个字符的5种方法
May 21 #Python
Python常用的文件及文件路径、目录操作方法汇总介绍
May 21 #Python
Python判断文件和文件夹是否存在的方法
May 21 #Python
python使用wxpython开发简单记事本的方法
May 20 #Python
Python使用shelve模块实现简单数据存储的方法
May 20 #Python
You might like
php无限级分类实现方法分析
2016/10/19 PHP
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
js过滤数组重复元素的方法
2010/09/05 Javascript
在jquery中处理带有命名空间的XML数据
2011/06/13 Javascript
alert出数组中的随即值代码
2014/09/25 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
字太多用...代替的方法(两种)
2017/03/15 Javascript
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
LayUi中接口传数据成功,表格不显示数据的解决方法
2018/08/19 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
[01:01:18]VP vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
在Windows8上的搭建Python和Django环境
2014/07/03 Python
小小聊天室Python代码实现
2016/08/17 Python
python线程中同步锁详解
2018/04/27 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
python for循环remove同一个list过程解析
2019/08/14 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
Python中如何定义一个函数
2016/09/06 面试题
学历公证委托书
2014/04/09 职场文书
技术股东合作协议书
2014/12/02 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
工程部经理岗位职责
2015/02/02 职场文书
大学学生会竞选稿
2015/11/19 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
话题作文之成长
2019/12/09 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL