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实现html转ubb代码(html2ubb)
Jul 03 Python
python计算对角线有理函数插值的方法
May 07 Python
Python打造出适合自己的定制化Eclipse IDE
Mar 02 Python
利用Python画ROC曲线和AUC值计算
Sep 19 Python
Python实现的简单模板引擎功能示例
Sep 02 Python
Flask解决跨域的问题示例代码
Feb 12 Python
Python 创建空的list,以及append用法讲解
May 04 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 Python
python删除某个目录文件夹的方法
May 26 Python
python mock测试的示例
Oct 19 Python
pycharm配置python 设置pip安装源为豆瓣源
Feb 05 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
解析mysql 表中的碎片产生原因以及清理
2013/06/22 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
Jquery promise实现一张一张加载图片
2015/11/13 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
详解Python Socket网络编程
2016/01/05 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
基于Python的自媒体小助手---登录页面的实现代码
2020/06/29 Python
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
迪卡侬波兰体育用品商店:Decathlon波兰
2020/03/31 全球购物
应届生法律求职信
2013/10/22 职场文书
地理科学专业自荐信
2014/09/01 职场文书
《改造我们的学习》心得体会
2014/11/07 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
作文批改评语
2014/12/25 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
行为习惯主题班会
2015/08/14 职场文书
2016新年问候语大全
2015/11/11 职场文书
小学四年级作文之写景
2019/08/23 职场文书
详解盒子端CSS动画性能提升
2021/05/24 HTML / CSS
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android