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实现多线程暴力破解登陆路由器功能代码分享
Jan 04 Python
Python 爬虫学习笔记之多线程爬虫
Sep 21 Python
使用python读取txt文件的内容,并删除重复的行数方法
Apr 18 Python
flask中的wtforms使用方法
Jul 21 Python
Python实现动态添加属性和方法操作示例
Jul 25 Python
提升Python程序性能的7个习惯
Apr 14 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
Python os模块常用方法和属性总结
Feb 20 Python
150行python代码实现贪吃蛇游戏
Apr 24 Python
Python自动创建Excel并获取内容
Sep 16 Python
如何解决.cuda()加载用时很长的问题
May 24 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
Jun 23 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与MySQL交互使用详解
2006/10/09 PHP
php中长文章分页显示实现代码
2012/09/29 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
2014/10/30 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
SeaJS 与 RequireJS 的差异对比
2014/12/08 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
JavaScript和jQuery制作光棒效果
2017/02/24 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
js实现上传并压缩图片效果
2018/01/10 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
Python实现在线音乐播放器
2017/03/03 Python
浅谈flask源码之请求过程
2018/07/26 Python
设置python3为默认python的方法
2018/10/31 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
Python jieba库用法及实例解析
2019/11/04 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
yy司仪主持词
2014/03/22 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL