Python 去除字符串中指定字符串


Posted in Python onMarch 05, 2020

1、背景

最近的项目中,再次踩到Python字符串处理的坑,决定把此次解决方案记录一下,以勿踩坑。

2、遇到坑

原本字符串:大坪英利国际8号楼88-88号重庆汉乔科技有限公司大坪英利国际8号楼
去除最左边的字符串:大坪英利国际8号楼
预期结果:88-88号重庆汉乔科技有限公司大坪英利国际8号楼

自然而然,第一个想到的就是lstrip()函数。

Python中lstrip() 方法用于截掉字符串左边的空格或指定字符。
但实际上结果:

lstrip: -88号重庆汉乔科技有限公司大坪英利国际8号楼

3、找到 lstrip() 坑的真相

函数原型:

def lstrip(self, chars=None): # real signature unknown; restored from __doc__
  """
  S.lstrip([chars]) -> str
  
  Return a copy of the string S with leading whitespace removed.
  If chars is given and not None, remove characters in chars instead.
  """
  return ""

看来 lstrip 方法是 比对字符 并去除,而不是简单的去除最左边字符串。
那好,再验证一下:

"重庆重庆师范大学".lstrip("重庆")

结果:

师范大学

那我想简单的去除字符串中的首个指定字符串,最好不用 lstrip() 了。
于是又想到了split 方法 和 replace 方法……

4、解决方案

4.1、方法1 split

函数原型:

def split(self, instring, maxsplit=_MAX_INT, includeSeparators=False):
  """
  Generator method to split a string using the given expression as a separator.
  May be called with optional C{maxsplit} argument, to limit the number of splits;
  and the optional C{includeSeparators} argument (default=C{False}), if the separating
  matching text should be included in the split results.
  
  Example::    
    punc = oneOf(list(".,;:/-!?"))
    print(list(punc.split("This, this?, this sentence, is badly punctuated!")))
  prints::
    ['This', ' this', '', ' this sentence', ' is badly punctuated', '']
  """
  splits = 0
  last = 0
  for t,s,e in self.scanString(instring, maxMatches=maxsplit):
    yield instring[last:s]
    if includeSeparators:
      yield t[0]
    last = e
  yield instring[last:]

4.2、方法2 replace

函数原型:

def replace(self, old, new, count=None):
  """
  For each element in `self`, return a copy of the string with all
  occurrences of substring `old` replaced by `new`.

  See also
  --------
  char.replace

  """
  return asarray(replace(self, old, new, count))

5、案例

5.1、源代码

# -*- coding: utf-8 -*-
"""
Author: ZhenYuSha
CreateTime: 2020-2-26
Info: 去除字符串中 首个指定字符串
"""


def run(source, key):
  tmp_ls = source.lstrip(key)
  tmp_re = source.replace(key, "", 1)
  tmp_sp = source.split(key, 1)[1]
  return tmp_ls, tmp_re, tmp_sp


if __name__ == '__main__':
  tmp_1, tmp_2, tmp_3 = run("大坪英利国际8号楼88-88号重庆汉乔科技有限公司大坪英利国际8号楼", "大坪英利国际8号楼")
  print("test_1 lstrip:", tmp_1)
  print("test_1 replace:", tmp_2)
  print("test_1 split:", tmp_3)

  tmp_1, tmp_2, tmp_3 = run("重庆重庆师范大学", "重庆")
  print("test_2 lstrip:", tmp_1)
  print("test_2 replace:", tmp_2)
  print("test_2 split:", tmp_3)

5.2、效果

Python 去除字符串中指定字符串

6、延伸

split 和 replace 可以解决字符串首个指定字符串去除问题, 但去除字符串这个问题不仅仅是去除就完了,还要去判断是否符合我们的要求。

6.1、看字符串开头是否是指定字符串

如果需要以指定字符串开头,要用 startswith 函数来判断。

6.2、看字符串中是否存在指定字符串

如果不存在指定字符串,直接用 split 和 replace 会直接崩溃的,那就需要 find 函数来查看了。

到此这篇关于Python 去除字符串中指定字符串的文章就介绍到这了,更多相关Python 去除字符串 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Django自定义过滤器定义与用法示例
Mar 22 Python
对命令行模式与python交互模式介绍
May 12 Python
python实现内存监控系统
Mar 07 Python
pycharm debug功能实现跳到循环末尾的方法
Nov 29 Python
使用python绘制二元函数图像的实例
Feb 12 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
python列表,字典,元组简单用法示例
Jul 11 Python
python实现两张图片拼接为一张图片并保存
Jul 16 Python
用Python实现Newton插值法
Apr 17 Python
Pygame Draw绘图函数的具体使用
Nov 17 Python
用Python爬取英雄联盟的皮肤详细示例
Dec 06 Python
Python脚本去除文件的只读性操作
Mar 05 #Python
Python IDE环境之 新版Pycharm安装详细教程
Mar 05 #Python
Python Handler处理器和自定义Opener原理详解
Mar 05 #Python
Python使用进程Process模块管理资源
Mar 05 #Python
Python json模块与jsonpath模块区别详解
Mar 05 #Python
Python如何用filter函数筛选数据
Mar 05 #Python
Python API len函数操作过程解析
Mar 05 #Python
You might like
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
php通过字符串调用函数示例
2014/03/02 PHP
用方法封装javascript的new操作符(一)
2010/12/25 Javascript
js检查页面上有无重复id的实现代码
2013/07/17 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
详解小程序循环require之坑
2019/03/08 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
[59:36]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第二场
2018/04/04 DOTA
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python类的动态修改的实例方法
2017/03/24 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
python实现加密的方式总结
2020/01/19 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
新秀丽拉杆箱美国官方网站:Samsonite美国
2016/07/25 全球购物
鱼油专家:Omegavia
2016/10/10 全球购物
Tory Burch德国官网:美国时尚生活品牌
2018/01/03 全球购物
会计实习期自我鉴定
2013/10/06 职场文书
民族团结先进个人材料
2014/02/05 职场文书
预备党员表决心书
2014/03/11 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
Python列表的索引与切片
2022/04/07 Python
windows系统搭建WEB服务器详细教程
2022/08/05 Servers