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 相关文章推荐
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
Feb 24 Python
利用python修改json文件的value方法
Dec 31 Python
详解python实现小波变换的一个简单例子
Jul 18 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
Jul 22 Python
python安装本地whl的实例步骤
Oct 12 Python
Django实现网页分页功能
Oct 31 Python
浅谈python中频繁的print到底能浪费多长时间
Feb 21 Python
python print 格式化输出,动态指定长度的实现
Apr 12 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
python中如何打包用户自定义模块
Sep 23 Python
python代码实现扫码关注公众号登录的实战
Nov 01 Python
Python 图片添加美颜效果
Apr 28 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删除记录操作代码
2008/06/07 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
跟我学Laravel之安装Laravel
2014/10/15 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
Nodejs实现批量下载妹纸图
2015/05/28 NodeJs
JavaScript模板引擎用法实例
2015/07/10 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
Python字符串和文件操作常用函数分析
2015/04/08 Python
PyMongo安装使用笔记
2015/04/27 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
优秀员工表扬信
2014/01/17 职场文书
优秀学生获奖感言
2014/02/15 职场文书
职业规划实施方案
2014/06/10 职场文书
同意迁入证明模板
2014/10/26 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
六一活动主持词
2015/06/30 职场文书
观看《筑梦中国》纪录片心得体会
2016/01/18 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
用python修改excel表某一列内容的操作方法
2021/06/11 Python
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript