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 相关文章推荐
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
Jul 04 Python
简述Python中的面向对象编程的概念
Apr 27 Python
Python实现建立SSH连接的方法
Jun 03 Python
python 开发的三种运行模式详细介绍
Jan 18 Python
Python 结巴分词实现关键词抽取分析
Oct 21 Python
Jupyter中直接显示Matplotlib的图形方法
May 24 Python
python监测当前联网状态并连接的实例
Dec 18 Python
python占位符输入方式实例
May 27 Python
Python学习笔记之While循环用法分析
Aug 14 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 Python
Python中openpyxl实现vlookup函数的实例
Oct 28 Python
Python Django获取URL中的数据详解
Nov 01 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
PHP性能优化 产生高度优化代码
2011/07/22 PHP
discuz加密解密函数使用方法和中文注释
2014/01/21 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
jQuery实现的上传图片本地预览效果简单示例
2018/03/29 jQuery
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
Python配置mysql的教程(推荐)
2017/10/13 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
python url 参数修改方法
2018/12/26 Python
对Python强大的可变参数传递机制详解
2019/06/13 Python
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
Python如何生成xml文件
2020/06/04 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
尼克胡哲观后感
2015/06/08 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书
源码安装apache脚本部署过程详解
2022/09/23 Servers