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统计日志中每个IP出现次数的方法
Jul 06 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
Apr 15 Python
python中使用正则表达式的连接符示例代码
Oct 10 Python
在CMD命令行中运行python脚本的方法
May 12 Python
python 函数内部修改外部变量的方法
Dec 18 Python
如何通过Python实现标签云算法
Jul 02 Python
Django 拆分model和view的实现方法
Aug 16 Python
python学生信息管理系统实现代码
Dec 17 Python
python 插入日期数据到Oracle实例
Mar 02 Python
Django实现翻页的示例代码
May 24 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 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 explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
javascript-TreeView父子联动效果保持节点状态一致
2007/08/12 Javascript
jquery异步循环获取功能实现代码
2010/09/19 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
原生js实现瀑布流效果
2020/03/09 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
python自带的http模块详解
2016/11/06 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
Python之字典对象的几种创建方法
2020/09/30 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
联想墨西哥官方网站:Lenovo墨西哥
2016/08/17 全球购物
Vero Moda西班牙官方购物网站:丹麦BESTSELLER旗下知名女装品牌
2018/04/27 全球购物
接口可以包含哪些成员
2012/09/30 面试题
高一数学教学反思
2014/02/07 职场文书
校庆标语集锦
2014/06/25 职场文书
绵山导游词
2015/02/05 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
Redis 配置文件重要属性的具体使用
2021/05/20 Redis
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers