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处理python编码问题
Mar 13 Python
浅谈Python类的__getitem__和__setitem__特殊方法
Dec 25 Python
python学习之面向对象【入门初级篇】
Jan 21 Python
tensorflow 中对数组元素的操作方法
Jul 27 Python
python3判断url链接是否为404的方法
Aug 10 Python
python:按行读入,排序然后输出的方法
Jul 20 Python
python实现桌面托盘气泡提示
Jul 29 Python
python的faker库用法
Nov 28 Python
python 遗传算法求函数极值的实现代码
Feb 11 Python
Python多个装饰器的调用顺序实例解析
May 22 Python
python获取整个网页源码的方法
Aug 03 Python
Django多个app urls配置代码实例
Nov 26 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
15种PHP Encoder的比较
2007/03/06 PHP
PHP的引用详解
2015/02/22 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
2019/04/12 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
2011/10/24 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
python实现从ftp服务器下载文件的方法
2015/04/30 Python
python常用知识梳理(必看篇)
2017/03/23 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
如何利用python生成MD5并去重
2020/12/07 Python
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
最好的商品表达自己:Cafepress
2019/09/04 全球购物
财务助理岗位职责
2013/11/10 职场文书
美国留学经济担保书
2014/05/20 职场文书
正科级干部考察材料
2014/05/29 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
产品委托授权书范本
2014/09/16 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
六一亲子活动感想
2015/08/07 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书