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生成随机验证码的两种方法
Dec 22 Python
Python读取视频的两种方法(imageio和cv2)
Apr 15 Python
基于python的图片修复程序(实现水印去除)
Jun 04 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
Jun 11 Python
python opencv实现运动检测
Jul 10 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
python生成每日报表数据(Excel)并邮件发送的实例
Feb 03 Python
详解numpy的argmax的具体使用
May 27 Python
Django用户认证系统 Web请求中的认证解析
Aug 02 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
Jun 24 Python
vscode配置anaconda3的方法步骤
Aug 08 Python
Idea安装python显示无SDK问题解决方案
Aug 12 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取得一个类的属性和方法的实现代码
2011/05/22 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
如何动态加载外部Javascript文件
2015/12/02 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
浅析vue数据绑定
2017/01/17 Javascript
Avalonjs 实现简单购物车功能(实例代码)
2017/02/07 Javascript
javascript数组定义的几种方法
2017/10/06 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
python线程、进程和协程详解
2016/07/19 Python
Django入门使用示例
2017/12/12 Python
Python模块WSGI使用详解
2018/02/02 Python
selenium+python环境配置教程详解
2019/05/28 Python
python pandas时序处理相关功能详解
2019/07/03 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
含精油的天然有机化妆品:Indemne
2019/08/27 全球购物
管理学专业个人求职信范文
2013/09/21 职场文书
老公给老婆的道歉信
2014/01/10 职场文书
自我介绍演讲稿
2014/01/15 职场文书
大学生优秀团员事迹材料
2014/01/30 职场文书
妈妈的账单教学反思
2014/02/06 职场文书
小学生手册家长评语
2014/04/16 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
2014年公务员工作总结
2014/11/18 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
mysql的Buffer Pool存储及原理
2022/04/02 MySQL
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server