python中查找字符串
1、测试1
>>> seq = 'ATGTGACCCTGATTTTGAATGatgAtgAtGaTGaTg' ## 定义测试字符串 >>> type(seq) <class 'str'>=
使用find查找:
>>> seq.find('ATG') ## 返回查找字符串的第一个索引 0 >>> seq.find('GTG') ## 同上 2 >>> seq.find('XTG') ## 当没有匹配的字符串时, 返回-1 -1 >>>
2、当有多个匹配的字符串时,返回每一个字符串的索引
>>> seq = 'ATGTGACCCTGATTTTGAATGatgAtgAtGaTGaTg' ## 定义一个测试字符串 >>> seq 'ATGTGACCCTGATTTTGAATGatgAtgAtGaTGaTg' >>> type(seq) <class 'str'> >>> def find_all(string, sub): ## 定义查找函数, 两个参数,一个是总字符串, 一个是要查找的字符串 start = 0 ## 定义查找的起始位置 pos = [] ## 定义空列表 while True: ## 设置循环条件 start = string.find(sub, start) ## 根据查找结果调整查找的起始位置 if start == -1: ## 设置循环终止条件,即没有匹配字符串时, 循环终止 return pos ## 返回所有的查找结果 pos.append(start) ## 将每次查找到的字符串的起始索引添加至pos列表 start += len(sub) ## 当查找到字符时, 查找起始位置向后移动被字符串长度个单位 >>> find_all(seq, 'XXX') ## 未匹配字符串情况 [] >>> find_all(seq, 'ATG') ## 一共查找到两个字符串, 索引分别为0, 18 [0, 18]
3、使用re库函数查找
>>> seq = 'ATGTGACCCTGATTTTGAATGatgAtgAtGaTGaTg' ## 测试字符串 >>> seq 'ATGTGACCCTGATTTTGAATGatgAtgAtGaTGaTg' >>> type(seq) <class 'str'> >>> import re ## 导入re库函数 >>> re.findall('ATG', seq) ## 直接返回字符串列表 ['ATG', 'ATG'] >>> [pos.start() for pos in re.finditer('ATG',seq)] ## 返回字符串索引 [0, 18] >>> re.findall('ATG', seq, flags=re.IGNORECASE) ## flags = re.IGNORECASE, 忽略大小写 ['ATG', 'ATG', 'atg', 'Atg', 'AtG', 'aTG', 'aTg'] >>> [pos.start() for pos in re.finditer('ATG',seq, flags = re.IGNORECASE)] [0, 18, 21, 24, 27, 30, 33]
来源:https://mp.weixin.qq.com/s?__biz=MzkyMTI1MTYxNA==&mid=2247496936&idx=1&sn=63eb0ed21f13af872ea7021b6b8b5b06&chksm=c184ce99f6f3478f07f4686abe3c8a82e7b7a1cc4d008c4bd49344f0759e9898bce06981c9fe&mpshare=1&scene=23&srcid=0319SfRKP46AoERwV8KNQ0te&sharer_sharetime=1647704088167&sharer_shareid=4ed060cc4cd1efce40e3ab6dd8d8c7d4#rd
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律