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命令行参数解析模块getopt使用实例
Apr 13 Python
Python类的定义、继承及类对象使用方法简明教程
May 08 Python
python比较两个列表大小的方法
Jul 11 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
Python实现繁体中文与简体中文相互转换的方法示例
Dec 18 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
python pptx复制指定页的ppt教程
Feb 14 Python
python实现最速下降法
Mar 24 Python
关于Django Models CharField 参数说明
Mar 31 Python
python新手学习可变和不可变对象
Jun 11 Python
用python对oracle进行简单性能测试
Dec 05 Python
pytorch中index_select()的用法详解
Jan 06 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 Ajax实现页面无刷新发表评论
2007/01/02 PHP
如何用php生成扭曲及旋转的验证码图片
2013/06/07 PHP
php防止伪造的数据从URL提交方法
2014/06/27 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
laravel5.1 ajax post 传值_token示例
2019/10/24 PHP
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
用js实现trim()的解决办法
2013/04/16 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
Vue2.0 实现页面缓存和不缓存的方式
2019/11/12 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
使用python实现扫描端口示例
2014/03/29 Python
Fabric 应用案例
2016/08/28 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
如何查找网页漏洞
2016/06/22 面试题
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
总经理秘书岗位职责
2014/03/17 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
无房产证房屋转让协议书合同样本
2014/10/18 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang