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通过ElementTree操作XML获取结点读取属性美化XML
Dec 02 Python
Python中最常用的操作列表的几种方法归纳
Apr 24 Python
Python中查看文件名和文件路径
Mar 31 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
Jan 02 Python
TensorFlow实现Batch Normalization
Mar 08 Python
利用python画出折线图
Jul 26 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
python打包生成so文件的实现
Oct 30 Python
matplotlib对象拾取事件处理的实现
Jan 14 Python
如何用六步教会你使用python爬虫爬取数据
Apr 06 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新手上路(八)
2006/10/09 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
简单实用的js调试logger组件实现代码
2010/11/20 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
Python 读写文件的操作代码
2018/09/20 Python
python爬取内容存入Excel实例
2019/02/20 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
Python pandas库中的isnull()详解
2019/12/26 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
检察官就职演讲稿
2014/01/13 职场文书
六年级数学教学反思
2014/02/03 职场文书
小学中秋节活动方案
2014/02/06 职场文书
财务总监岗位职责
2014/03/07 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
党支部季度考核意见
2015/06/02 职场文书
风之谷观后感
2015/06/11 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
win10安装配置nginx的过程
2021/03/31 Servers