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编写Linux系统守护进程实例
Feb 03 Python
Python map和reduce函数用法示例
Feb 26 Python
Python RuntimeError: thread.__init__() not called解决方法
Apr 28 Python
深入解析Python中的变量和赋值运算符
Oct 12 Python
Python正则简单实例分析
Mar 21 Python
python编程实现归并排序
Apr 14 Python
python机器学习实战之最近邻kNN分类器
Dec 20 Python
pip指定python位置安装软件包的方法
Jul 12 Python
Python 根据数据模板创建shapefile的实现
Nov 26 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
python框架Django实战商城项目之工程搭建过程图文详解
Mar 09 Python
python中的对数log函数表示及用法
Dec 09 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+MYSQL的文章管理系统(一)
2006/10/09 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
jquery 简单导航实现代码
2009/09/11 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
js实现幻灯片效果(基于jquery插件)
2013/11/05 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
详解package.json版本号规则
2019/08/01 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
2019/11/13 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
Python实现的knn算法示例
2018/06/14 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
详解CSS3:overflow属性
2020/11/17 HTML / CSS
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
优秀经理事迹材料
2014/02/01 职场文书
安全月宣传标语
2014/10/07 职场文书
硕士学位申请报告
2015/05/15 职场文书
休假证明书
2015/06/24 职场文书
学习雷锋主题班会
2015/08/14 职场文书
交通安全教育心得体会
2016/01/15 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
详解使用内网穿透工具Ngrok代理本地服务
2022/03/31 Servers
Redis过期数据是否会被立马删除
2022/07/23 Redis