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基于BeautifulSoup实现抓取网页指定内容的方法
Jul 09 Python
Python编程中的文件操作攻略
Oct 16 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
python实现归并排序算法
Nov 22 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
Apr 12 Python
python字典一键多值实例代码分享
Jun 14 Python
使用Python为中秋节绘制一块美味的月饼
Sep 11 Python
python类中super() 的使用解析
Dec 19 Python
python读取当前目录下的CSV文件数据
Mar 11 Python
Python基于smtplib模块发送邮件代码实例
May 29 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
Apr 24 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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
php的控制语句
2006/10/09 PHP
php网站判断用户是否是手机访问的方法
2013/11/01 PHP
php实现文件下载简单示例(代码实现文件下载)
2014/03/10 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
PHP常用操作类之通信数据封装类的实现
2017/07/16 PHP
豆瓣网的jquery代码实例
2008/06/15 Javascript
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
express.js中间件说明详解
2019/03/19 Javascript
微信小程序 slot踩坑的解决
2019/04/01 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
2020/01/07 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
Python实现类的创建与使用方法示例
2017/07/25 Python
python文件名和文件路径操作实例
2017/09/29 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
django中间键重定向实例方法
2019/11/10 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
幼师求职信
2014/06/23 职场文书
市场督导岗位职责
2015/04/10 职场文书
导游词之西安骊山
2019/12/20 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js