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 相关文章推荐
Python Socket实现简单TCP Server/client功能示例
Aug 05 Python
Python编程pygal绘图实例之XY线
Dec 09 Python
对numpy 数组和矩阵的乘法的进一步理解
Apr 04 Python
python使用代理ip访问网站的实例
May 07 Python
python3利用tcp实现文件夹远程传输
Jul 28 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
Sep 02 Python
python获取当前文件路径以及父文件路径的方法
Jul 10 Python
Python依赖包整体迁移方法详解
Aug 15 Python
python如何进行矩阵运算
Jun 05 Python
python对一个数向上取整的实例方法
Jun 18 Python
利用python对excel中一列的时间数据更改格式操作
Jul 14 Python
python爬虫利用代理池更换IP的方法步骤
Feb 21 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
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
jQuery聚合函数实例
2015/05/21 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
Vue EventBus自定义组件事件传递
2018/06/25 Javascript
JS如何生成动态列表
2020/09/22 Javascript
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
python获取一组数据里最大值max函数用法实例
2015/05/26 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
Python for i in range ()用法详解
2020/09/18 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
企业转让协议书(范文2篇)
2019/08/15 职场文书
创业计划书之便利店
2019/09/05 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
Python深度学习之实现卷积神经网络
2021/06/05 Python