Python 去除字符串中指定字符串

作者:沙振宇 时间:2023-04-20 23:44:53 

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 函数来查看了。

来源:https://blog.csdn.net/u014597198/article/details/104511575

标签:Python,去除字符串
0
投稿

猜你喜欢

  • 使用curl命令行模拟登录WordPress的方法

    2022-02-23 17:15:06
  • golang mysql的连接池的具体使用

    2024-01-14 11:52:10
  • Python实现电视里的5毛特效实例代码详解

    2023-03-18 00:03:46
  • java JSP开发之Spring中Bean的使用

    2023-06-16 07:35:08
  • 详解Python中的循环语句的用法

    2023-10-26 08:37:35
  • TensorFlow绘制loss/accuracy曲线的实例

    2022-01-25 08:01:16
  • 使用python实现男神女神颜值打分系统(推荐)

    2021-07-17 23:06:57
  • python tkinter实现屏保程序

    2023-02-20 14:31:20
  • Python进阶之如何快速将变量插入有序数组

    2021-07-26 16:52:51
  • python PaddleSpeech实现婴儿啼哭识别

    2023-08-22 22:25:31
  • python2.7 json 转换日期的处理的示例

    2021-02-10 12:39:50
  • Linux安装Python3.8.1的教程详解

    2022-03-26 10:43:24
  • JS将指定的某个字符全部转换为其他字符实例代码

    2023-08-28 21:01:01
  • 简单了解python变量的作用域

    2022-07-21 13:10:08
  • SQL Server中的排名函数与分析函数详解

    2024-01-17 03:28:54
  • PyTorch 1.0 正式版已经发布了

    2021-12-09 23:54:57
  • 基于PyQT实现区分左键双击和单击

    2022-10-30 01:58:47
  • MYSQL插入处理重复键值的几种方法

    2024-01-22 05:41:28
  • python ipset管理 增删白名单的方法

    2021-02-10 17:38:19
  • SQL Server 公用表表达式(CTE)实现递归的方法

    2024-01-26 15:20:10
  • asp之家 网络编程 m.aspxhome.com