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 03 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
基于Pandas读取csv文件Error的总结
Jun 15 Python
python实现控制台打印的方法
Jan 12 Python
python 切换root 执行命令的方法
Jan 19 Python
pyinstaller参数介绍以及总结详解
Jul 12 Python
Django在pycharm下修改默认启动端口的方法
Jul 26 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
python中get和post有什么区别
Jun 19 Python
Django通过设置CORS解决跨域问题
Nov 26 Python
利用Python实现最小二乘法与梯度下降算法
Feb 21 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使用qr生成二维码的示例分享
2014/01/20 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
php 浮点数比较方法详解
2017/05/05 PHP
jquery ajax 登录验证实现代码
2009/09/23 Javascript
Javascript 面向对象(三)接口代码
2012/05/23 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
2016/11/24 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
node-sass安装失败的原因与解决方法
2017/09/04 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
微信小程序实现上拉加载功能
2019/11/20 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
解决python3 json数据包含中文的读写问题
2018/05/10 Python
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
.net软件工程师应聘上机试题
2015/03/10 面试题
后勤服务中心总经理工作职责
2014/03/03 职场文书
保护环境建议书100字
2014/05/13 职场文书
工程项目经理任命书
2014/06/05 职场文书
新闻专业毕业生求职信
2014/08/08 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
2014年保密工作总结
2014/11/22 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书
工程部经理岗位职责
2015/02/02 职场文书
男生贾里读书笔记
2015/06/30 职场文书
分享几个JavaScript运算符的使用技巧
2021/04/24 Javascript
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript