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语言中的按位运算符
Nov 26 Python
安装Python的web.py框架并从hello world开始编程
Apr 25 Python
浅谈Python中函数的参数传递
Jun 21 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
使用Py2Exe for Python3创建自己的exe程序示例
Oct 31 Python
谈谈Python中的while循环语句
Mar 10 Python
Python简易版图书管理系统
Aug 12 Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 Python
Python FtpLib模块应用操作详解
Dec 12 Python
Python3创建Django项目的几种方法(3种)
Jun 03 Python
一劳永逸彻底解决pip install慢的办法
May 24 Python
python实现会员管理系统
Mar 18 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框架Phpbean说明
2008/01/10 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
php实现图片转换成ASCII码的方法
2015/04/03 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
最常用的12种设计模式小结
2011/08/09 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
JS中的this变量的使用介绍
2013/10/21 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
2020/02/20 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
python实现简单登陆流程的方法
2018/04/22 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
超实用的 30 段 Python 案例
2019/10/10 Python
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
台湾三立电视电商平台:电电购
2019/09/09 全球购物
经理管理专业自荐信范文
2013/12/31 职场文书
消防安全管理制度
2014/02/01 职场文书
市场营销工作计划书
2014/05/06 职场文书
优秀校长事迹材料
2014/12/24 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python