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常用列表数据结构小结
Aug 06 Python
python查询mysql中文乱码问题
Nov 09 Python
Python3.2中的字符串函数学习总结
Apr 23 Python
Python用sndhdr模块识别音频格式详解
Jan 11 Python
Python交互环境下实现输入代码
Jun 22 Python
python实现求两个字符串的最长公共子串方法
Jul 20 Python
如何用Python制作微信好友个性签名词云图
Jun 28 Python
对python 调用类属性的方法详解
Jul 02 Python
python with (as)语句实例详解
Feb 04 Python
在matplotlib中改变figure的布局和大小实例
Apr 23 Python
python名片管理系统开发
Jun 18 Python
Python 添加文件注释和函数注释操作
Aug 09 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中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
jquery之empty()与remove()区别说明
2010/09/10 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
2016/02/25 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
2020/03/09 Javascript
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
在Django中同时使用多个配置文件的方法
2015/07/22 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
Python实现线程状态监测简单示例
2018/03/28 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
Python Lambda函数使用总结详解
2019/12/11 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
电子信息专业学生自荐信
2013/11/09 职场文书
采购员岗位职责
2013/11/15 职场文书
计算机毕业生自荐信范文
2014/03/23 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
先进员工事迹材料
2014/12/20 职场文书
通知的格式范文
2015/04/27 职场文书
python munch库的使用解析
2021/05/25 Python
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技