Python字符串中查找子串小技巧


Posted in Python onApril 10, 2015

惭愧啊,今天写了个查找子串的Python程序被BS了…

如果让你写一个程序检查字符串s2中是不是包含有s1。也许你会很直观的写下下面的代码:

#determine whether s1 is a substring of s2 

def isSubstring1(s1,s2): 

    tag = False 

    len1 = len(s1) 

    len2 = len(s2) 

    for i in range(0,len2): 

        if s2[i] == s1[0]: 

            for j in range(0,len1): 

                if s2[i]==s1[j]: 

                    tag = True 

    return tag

可是这是Python,我们可以利用字符串自带的find()方法,于是可以这样:

def isSubstring2(s1,s2): 

    tag = False 

    if s2.find(s1) != -1: 

        tag = True 

    return tag

悲情的事就在于此,原来Python中的关键字"in”不仅可以用于列表、元祖等数据类型,还可以用于字符串。所以,这里只需要直接一行代码搞定:
def isSubstring3(s1,s2):

    return s1 in s2

后知后觉了,惭愧;-)

类似的,假设要在字符串中,查找多个子串是否存在,并打印出这些串和首次出现的位置:

def findSubstrings(substrings,destString):

    res =  map(lambda x:str([destString.index(x),x]),filter(lambda x:x in destString,substrings))

    if res:

        return ', '.join(list(res))

 

;-)  very cool~

UPDATE: 如果你不习惯最后面这种看起来很复杂的语法也没关系,可以使用列表解析,更加简洁:
def findSubstrings(substrings,destString):

    return ', '.join([str([destString.index(x),x]) for x in substrings if x in destString])
Python 相关文章推荐
python迭代器实例简析
Sep 25 Python
Python去除字符串两端空格的方法
May 21 Python
python创建进程fork用法
Jun 04 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
python得到电脑的开机时间方法
Oct 15 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
利用selenium爬虫抓取数据的基础教程
Jun 10 Python
Python实现元素等待代码实例
Nov 11 Python
pandas中ix的使用详细讲解
Mar 09 Python
Python文本文件的合并操作方法代码实例
Mar 31 Python
利用pandas向一个csv文件追加写入数据的实现示例
Apr 23 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
Sep 04 Python
简单介绍Ruby中的CGI编程
Apr 10 #Python
详细介绍Ruby中的正则表达式
Apr 10 #Python
对于Python的Django框架部署的一些建议
Apr 09 #Python
Python线程中对join方法的运用的教程
Apr 09 #Python
在Python的Flask框架下使用sqlalchemy库的简单教程
Apr 09 #Python
详解Python中的正则表达式的用法
Apr 09 #Python
Python中几种操作字符串的方法的介绍
Apr 09 #Python
You might like
php数组去重复数据示例
2014/02/25 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
JS实现时间校验的代码
2020/05/25 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
Python对list列表结构中的值进行去重的方法总结
2016/05/07 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
浅谈python装饰器探究与参数的领取
2017/12/01 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
企业委托书范本
2014/09/13 职场文书
2014年妇联工作总结
2014/11/21 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
2015年公司工作总结
2015/04/25 职场文书
家庭聚会祝酒词
2015/08/11 职场文书
安全教育培训心得体会
2016/01/15 职场文书
教师外出学习心得体会
2016/01/18 职场文书
再谈python_tkinter弹出对话框创建
2022/03/20 Python