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批量下载图片的三种方法
Apr 22 Python
详解Python3中的Sequence type的使用
Aug 01 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
Nov 15 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
Python之列表的插入&替换修改方法
Jun 28 Python
pandas取出重复数据的方法
Jul 04 Python
python变量的存储原理详解
Jul 10 Python
Pandas聚合运算和分组运算的实现示例
Oct 17 Python
使用Python实现正态分布、正态分布采样
Nov 20 Python
python 读写文件包含多种编码格式的解决方式
Dec 20 Python
Python如何使用paramiko模块连接linux
Mar 18 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
Nov 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中如何将数组变量写入文件
2013/06/06 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
php命名空间学习详解
2014/02/27 PHP
php购物车实现方法
2015/01/03 PHP
php简单判断两个字符串是否相等的方法
2015/07/13 PHP
php实现的农历算法实例
2015/08/11 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
2016/04/20 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
浅谈webpack性能榨汁机(打包速度优化)
2019/01/09 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
[26:21]浴火之凤-TI4世界冠军Newbee战队纪录片
2014/08/07 DOTA
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
PyCharm搭建Spark开发环境的实现步骤
2019/09/05 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
污水厂厂长岗位职责
2014/01/04 职场文书
社区活动邀请函范文
2014/01/29 职场文书
高中军训感想300字
2014/03/04 职场文书
就业协议书怎么填
2014/04/11 职场文书
先进员工获奖感言
2014/08/14 职场文书
出生医学证明书
2014/09/15 职场文书
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
北京故宫导游词
2015/01/31 职场文书
捐款仪式主持词
2015/07/04 职场文书
Python如何加载模型并查看网络
2022/07/15 Python