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的socket模块源码中的一些实现要点分析
Jun 06 Python
Python文件的读写和异常代码示例
Oct 31 Python
Python实现的直接插入排序算法示例
Apr 29 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
Python if语句知识点用法总结
Jun 10 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 Python
Python析构函数__del__定义原理解析
Nov 20 Python
Django多个app urls配置代码实例
Nov 26 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
Mar 04 Python
python井字棋游戏实现人机对战
Apr 28 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
PHP5.3与5.5废弃与过期函数整理汇总
2014/07/10 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
php遍历类中包含的所有元素的方法
2015/05/12 PHP
php微信公众号开发模式详解
2016/11/28 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
jQuery中append()方法用法实例
2014/12/25 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
详解AngularJS Filter(过滤器)用法
2015/12/28 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
使用vue-router设置每个页面的title方法
2018/02/11 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
简化版的vue-router实现思路详解
2018/10/19 Javascript
layer弹出子iframe层父子页面传值的实现方法
2018/11/22 Javascript
微信小程序顶部导航栏滑动tab效果
2019/01/28 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
详解在Python程序中使用Cookie的教程
2015/04/30 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
python异步实现定时任务和周期任务的方法
2019/06/29 Python
Django-Model数据库操作(增删改查、连表结构)详解
2019/07/17 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
给老婆的搞笑检讨书
2014/01/12 职场文书
中层干部竞争上岗演讲稿
2014/01/13 职场文书
社区好人好事材料
2014/12/26 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
工作经历证明范本
2015/06/15 职场文书
灵魂歌王观后感
2015/06/17 职场文书
python必学知识之文件操作(建议收藏)
2021/05/30 Python