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中集合类型(set)学习小结
Jan 28 Python
详解Django中间件执行顺序
Jul 16 Python
pygame游戏之旅 载入小车图片、更新窗口
Nov 20 Python
简单了解python代码优化小技巧
Jul 08 Python
pandas DataFrame创建方法的方式
Aug 02 Python
python+rsync精确同步指定格式文件
Aug 29 Python
PYTHON实现SIGN签名的过程解析
Oct 28 Python
python烟花效果的代码实例
Feb 25 Python
python简单实现最大似然估计&scipy库的使用详解
Apr 15 Python
python爬虫容易学吗
Jun 02 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
Jul 06 Python
calendar在python3时间中常用函数举例详解
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/08/08 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
JavaScript数组常用操作技巧汇总
2014/11/17 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
使用jquery.form.js实现图片上传的方法
2016/05/05 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
用Python实现一个简单的能够发送带附件的邮件程序的教程
2015/04/08 Python
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
使用python实现多维数据降维操作
2020/02/24 Python
python 读取二进制 显示图片案例
2020/04/24 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
竞聘上岗演讲稿
2014/05/16 职场文书
2014年政工师工作总结
2014/12/18 职场文书
运动会通讯稿100字
2015/07/20 职场文书
教师远程培训心得体会
2016/01/09 职场文书
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS