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 相关文章推荐
Windows下用py2exe将Python程序打包成exe程序的教程
Apr 08 Python
从源码解析Python的Flask框架中request对象的用法
Jun 02 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
python如何为被装饰的函数保留元数据
Mar 21 Python
python中不能连接超时的问题及解决方法
Jun 10 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
pandas pivot_table() 按日期分多列数据的方法
Nov 16 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
Dec 15 Python
python 读写excel文件操作示例【附源码下载】
Jun 19 Python
python爬虫 线程池创建并获取文件代码实例
Sep 28 Python
python 实现dict转json并保存文件
Dec 05 Python
keras 获取某层输出 获取复用层的多次输出实例
May 23 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+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
js 异步处理进度条
2010/04/01 Javascript
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
python计算对角线有理函数插值的方法
2015/05/07 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
中青班党性分析材料
2014/02/16 职场文书
商务经理岗位职责
2014/07/30 职场文书
作风整顿剖析材料
2014/09/30 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
高中家长意见怎么写
2015/06/03 职场文书
应收账款管理制度
2015/08/06 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技