假设有一个字符串,其数据组成方式为:"mode_id1_str_id2",其中id1和id2为任意个数的数字,若存在mode,则id1必然也存在,否则都不存在;id2可有可没有。

如这些字符串满足条件:s1 = 'mode_0_string1_1',s2 = 'string2', s3 = 'mode_1_string3' , s4 = 'string4_12'。

目的:去掉mode_id1和id2,也就是去掉满足某种条件的字符串的前缀和后缀,或者到中间的字符串。如上面的例子中,获取的字符串分别为:string1、string2、string3、string4。

函数实现如下:

 1    s1 = 'mode_0_string1_1'
2 s2 = 'string2'
3 s3 = 'mode_1_string3'
4 s4 = 'string4_12'
5 mode = 'mode'
6 for s in [s1, s2, s3, s4]:
7 prefix = re.match(mode+'_\d+', s)
8 if bool(prefix) == True:
9 prefix_string = prefix.group()
10 prefix_index = len(prefix_string)
11 drop_prefix = s[prefix_index+1:]
12 else:
13 drop_prefix = s
14 # 去掉后缀
15 s_tmp = drop_prefix[::-1]
16 suffix = re.match('\d+_', s_tmp)
17 if bool(suffix) == True:
18 suffix_index = len(suffix.group())
19 suffix_string = drop_prefix[-suffix_index:]
20 drop_suffix = drop_prefix[:-suffix_index]
21 else:
22 drop_suffix = drop_prefix
23 print (drop_suffix)

输出结果:

1 string1
2 string2
3 string3
4 string4

这个函数其实没有普遍的使用意义,在这里只是想说明我们要匹配字符串尾部的字符串时,可以使用string[::-1]的方式先将字符串反过来,再当作处理一般的字符串首部就行了。

python-一种去掉前后缀获取子串的方法的更多相关文章

  1. python 删除2天前后缀为.log的文件

    python脚本 删除2天前后缀为.log的文件 #!/usr/local/python/bin/python #-*-coding=utf8 -*- import time import os,sy ...

  2. js-一种去掉数组中重复元素的方法

    思路来源于某个同学的博客 function norepeat(arr){ return arr.filter(function(val,index,array) { return array.inde ...

  3. poj 2752 Seek the Name, Seek the Fame【KMP算法分析记录】【求前后缀相同的子串的长度】

    Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14106   Ac ...

  4. python面对对象编程-------5:获取属性的四种办法:@property, __setattr__(__getattr__) ,descriptor

    一:最基本的属性操作 class Generic: pass g= Generic() >>> g.attribute= "value" #创建属性并赋值 > ...

  5. python入门教程之十五获取对象属性的几种方法

    当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> ...

  6. Hibernate给表和字段设置前后缀及分隔符

    在<一口一口吃掉Hibernate(一)--使用SchemaExport生成数据表>中介绍了如何生成数据表.但是这只是最基本的.hibernate在生成或者操作数据库时,会受一些限制.比如 ...

  7. Python:如何用一行代码获取上个月是几月

    现在转一篇志军100发于公众号 Python之禅的文章: Python:如何用一行代码获取上个月是几月 抱歉我用了个有点标题党的标题,因为担心你错过了本文,但内容绝对干货,本文介绍的关于Python时 ...

  8. python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...

  9. Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...

  10. Objective-C 【NSString-字符串比较&前后缀检查及搜索】

    ———————————————————————————————————————————NSString 字符串比较 #import <Foundation/Foundation.h> vo ...

随机推荐

  1. uniapp小程序页面实现元素与胶囊进行居中对齐

    无论是否为uni,关键在于获取胶囊中点的位置,如果是原生小程序根据小程序文档获取,其余逻辑处理是一致的 代码语法都只是技术选择,重点是逻辑处理,对于技术的运用,代码技术好比是积木,好的程序就是好的组合 ...

  2. 二叉查找树的实现C/C++

    二叉查找树是一种关键字有序存放的二叉树.在不含重复关键字的二叉查找树中,关键字"较小"的节点一定在关键字"较大"的节点的左子树中,"较小"一 ...

  3. Spring官方RSocket Broker 0.3.0发布: 快速构建你的RSocket架构

    ​简介:Spring官方的RSocket Broker其实开发已经非常久了,我以为会伴随着Spring Cloud 2021.0发布的,但是没有发生.不过Spring RSocket Broker还是 ...

  4. 块存储监控与服务压测调优利器-EBS Lens发布

    ​简介:SLS团队联合EBS团队发布了EBS Lens,针对块存储提供数据分析.资源监控的功能,可以帮助用户获取云上块存储资源信息与性能监控数据.提升云上块存储资源的管理效率.高效分析业务波动与资源性 ...

  5. Serverless 时代下大规模微服务应用运维的最佳实践

    简介: 原来的微服务用户需要自建非常多的组件,包括 PaaS 微服务一些技术框架,运维 IaaS.K8s,还包括可观测组件等.SAE 针对这些方面都做了整体的解决方案,使用户只需要关注自己的业务系统, ...

  6. WPF 简单聊聊如何使用 DrawGlyphRun 绘制文本

    在 WPF 里面,提供的使用底层的方法绘制文本是通过 DrawGlyphRun 的方式,此方法适合用在需要对文本进行精细控制的定制化控件上.此方法特别底层而让调用方法比较复杂,本文告诉大家一些简单的使 ...

  7. Unlink原理和一些手法

    Unlink原理和一些手法 简单介绍一下unlink相关的知识 unlink是利用glibc malloc 的内存回收机制造成攻击的,核心就在于当两个free的堆块在物理上相邻时,会将他们合并,并将原 ...

  8. Multisim14.0安装步骤

    免责声明:以下图片资源来源于Internet,作搜集学习之用.   此处,若只用到multisim仿真,可以只选择multisim 14.0 下面的education edition.

  9. Codeforces Round 927 (Div. 3) EFG

    E:Link 题意:给定长度小于 \(4 \times 10^5\) 的整数 \(n\),求从 \(0\) 到 \(n\) 各数位变化次数之和. 如:\(n = 12345\) 个位变化 \(1234 ...

  10. Python中强大的通用ORM框架:SQLAlchemy

    Python中强大的通用ORM框架:SQLAlchemy https://zhuanlan.zhihu.com/p/444930067