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中的装饰器用法详解
Jan 14 Python
在Python中使用HTMLParser解析HTML的教程
Apr 29 Python
python中字符串比较使用is、==和cmp()总结
Mar 18 Python
selenium2.0中常用的python函数汇总
Aug 05 Python
Python函数装饰器原理与用法详解
Aug 16 Python
python flask搭建web应用教程
Nov 19 Python
pytorch torchvision.ImageFolder的用法介绍
Feb 20 Python
python代码中怎么换行
Jun 17 Python
MAC平台基于Python Appium环境搭建过程图解
Aug 13 Python
Python调用ffmpeg开源视频处理库,批量处理视频
Nov 16 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
Jan 10 Python
python编程学习使用管道Pipe编写优化代码
Nov 20 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 strtr() 函数使用说明
2008/11/21 PHP
php中计算程序运行时间的类代码
2012/11/03 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
PHP实现的进度条效果详解
2016/05/03 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
为什么JS中eval处理JSON数据要加括号
2015/04/13 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
2016/08/01 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
js利用appendChild对标签进行排序的实现方法
2016/10/16 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
JavaScript中立即执行函数实例详解
2017/11/04 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
python list 合并连接字符串的方法
2013/03/09 Python
Python实现多行注释的另类方法
2014/08/22 Python
Python中functools模块函数解析
2017/03/12 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
python 字典修改键(key)的几种方法
2018/08/10 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
Python I/O与进程的详细讲解
2019/03/08 Python
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
如何掌握自荐信格式呢
2013/11/19 职场文书
公司人力资源的自我评价
2014/01/02 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
新郎新娘致辞
2015/07/31 职场文书
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS