Python检测字符串中是否包含某字符集合中的字符


Posted in Python onMay 21, 2015

目的

检测字符串中是否包含某字符集合中的字符

方法

最简洁的方法如下,清晰,通用,快速,适用于任何序列和容器

def containAny(seq,aset):

    for c in seq:

         if c in aset:

                return True

    return False

      第二种适用itertools模块来可以提高一点性能,本质上与前者是同种方法(不过此方法违背了Python的核心观点:简洁,清晰)

itertools.ifilter(predicate, iterable)的说明

Make an iterator that filters elements from iterable returning only those for which the predicate is True. If predicate is None, return the items that are true.

例如:

ifilter(lambda x: x%2, range(10)) --> 1 3 5 7 9

 import itertools
def  containAny(seq,aset):
     for item in itertools.ifilter(aset.__contain__,seq):
            return True
     return False

 

如果要检测两个字符串是否为包含关系,此时必须检查所有子项,最好适用set类型,其中set(aset).difference(seq)是指存在于aset中而seq没有的元素:

def  containAll(seq,aset):

      return not set(aset).difference(seq)

例如下面这个例子:

In [4]: L1=[1,2,3,4]
In [5]: L2=[1,4,3,1]
In [6]: containAll(L1,L2)

Out[6]: True
In [7]: containAll(L2,L1)

Out[7]: False

 

注意一下,set.symmetric_difference是指两个集合独有的元素

In [9]: L2=[3,2,4,5]

In [10]: x=set(L1)

In [11]: x.symmetric_difference(L2)

Out[11]: set([1, 5])
Python 相关文章推荐
Python进行数据科学工作的简单入门教程
Apr 01 Python
python判断图片宽度和高度后删除图片的方法
May 22 Python
浅谈Python类的__getitem__和__setitem__特殊方法
Dec 25 Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 Python
对dataframe进行列相加,行相加的实例
Jun 08 Python
Django使用paginator插件实现翻页功能的实例
Oct 24 Python
python-pyinstaller、打包后获取路径的实例
Jun 10 Python
Python绘制股票移动均线的实例
Aug 24 Python
python使用pip安装SciPy、SymPy、matplotlib教程
Nov 20 Python
使用python远程操作linux过程解析
Dec 04 Python
pycharm激活码快速激活及使用步骤
Mar 12 Python
python em算法的实现
Oct 03 Python
Linux下用Python脚本监控目录变化代码分享
May 21 #Python
Python批量按比例缩小图片脚本分享
May 21 #Python
初步讲解Python中的元组概念
May 21 #Python
Linux下使用python自动修改本机网关代码分享
May 21 #Python
Python字符串逐字符或逐词反转方法
May 21 #Python
Python合并字符串的3种方法
May 21 #Python
在Python中使用sort()方法进行排序的简单教程
May 21 #Python
You might like
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
js添加table的行和列 具体实现方法
2013/07/22 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
详解微信小程序 template添加绑定事件
2017/06/23 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
Jquery Datatables的使用详解
2020/01/30 jQuery
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
[01:21]2018DOTA2亚洲邀请赛4.5采访 打DOTA2也能有女朋友?
2018/04/06 DOTA
python的常见命令注入威胁
2013/02/18 Python
python实现rest请求api示例
2014/04/22 Python
python两种遍历字典(dict)的方法比较
2014/05/29 Python
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
python实现电脑自动关机
2018/06/20 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
python进行参数传递的方法
2020/05/12 Python
汽车专业毕业生自荐信
2013/11/03 职场文书
外贸业务员工作职责
2014/01/06 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
广告语设计及教案
2014/03/21 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
小班教师个人总结
2015/02/05 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL
SpringBoot 集成Redis 过程
2021/06/02 Redis
教你一步步实现一个简易promise
2021/11/02 Javascript
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电