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 open读写文件实现脚本
Sep 06 Python
深入讲解Python中的迭代器和生成器
Oct 26 Python
Python按行读取文件的简单实现方法
Jun 22 Python
浅谈numpy库的常用基本操作方法
Jan 09 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
Python使用pyautocad+openpyxl处理cad文件示例
Jul 11 Python
Python之Class&amp;Object用法详解
Dec 25 Python
Python实现AI换脸功能
Apr 10 Python
python中setuptools的作用是什么
Jun 19 Python
Python同时迭代多个序列的方法
Jul 28 Python
python之np.argmax()及对axis=0或者1的理解
Jun 02 Python
python scrapy简单模拟登录的代码分析
Jul 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
thinkphp中连接oracle时封装方法无法用的解决办法
2013/06/17 PHP
php mb_substr()函数截取中文字符串应用示例
2014/07/29 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
jQuery 方法大全方便学习参考
2010/02/25 Javascript
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
nodejs导出excel的方法
2015/06/30 NodeJs
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
2018/07/16 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
python字典序问题实例
2014/09/26 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
python生成九宫格图片
2018/11/19 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
Python实现代码统计工具
2019/09/19 Python
python基于socket函数实现端口扫描
2020/05/28 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
navabi英国:设计师大码女装
2019/06/25 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
Ruby如何进行文件操作
2014/07/17 面试题
生日邀请函范文
2014/01/13 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
校长新学期致辞
2015/07/30 职场文书
情人节单身感言
2015/08/03 职场文书
食品卫生管理制度
2015/08/06 职场文书
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript