Python 去除字符串中指定字符串
作者:沙振宇 发布时间:2023-04-20 23:44:53
标签:Python,去除字符串
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、效果
6、延伸
split 和 replace 可以解决字符串首个指定字符串去除问题, 但去除字符串这个问题不仅仅是去除就完了,还要去判断是否符合我们的要求。
6.1、看字符串开头是否是指定字符串
如果需要以指定字符串开头,要用 startswith 函数来判断。
6.2、看字符串中是否存在指定字符串
如果不存在指定字符串,直接用 split 和 replace 会直接崩溃的,那就需要 find 函数来查看了。
来源:https://blog.csdn.net/u014597198/article/details/104511575
0
投稿
猜你喜欢
- 1:readline()file = open("sample.txt") while 1: line =
- 1.安装第三方模块包pip install django-ckeditor2.添加应用INSTALLED_APPS = [ ..
- 原型扩展:>> String.prototype :String对象原型扩展 --------------
- 很多jsp程序员都遇到过这样的情况,jsp页面传递参数到servlet,只要参数有中文就是乱码,且大多数是??????乱码,尝试了网上比较普
- <?php header(“Content-Type:text/html;charset=utf-8″); if (isset($_G
- Request.ServerVariables("Url") 返回服务器地址Request.ServerVariable
- <%Function BytesToBstr(body,Cset)dim objstreamset&n
- 本文实例讲述了django框架实现模板中获取request 的各种信息。分享给大家供大家参考,具体如下:在做网页程序时,request,re
- 本文实例讲述了php隐藏IP地址后两位显示为星号的方法。分享给大家供大家参考。具体实现方法如下:我们在很多的公共网站中都会有碰到显示用户的I
- 本文较为详细的讲述了PHP图片库imagemagick的安装方法。分享给大家供大家参考。具体方法如下:1.下载ImageMagickhttp
- 前言random模块实现了各种分布的伪随机数生成器。伪随机数:人类使用算法等方式,以一个基准(也被称为种子,常用的是时间戳)来构造一系列数字
- 产品通常分两种,一种是遵循现有用户习惯,一种是颠覆用户习惯。至于什么是用户习惯,你现在用右手还是左手操作鼠标,这就是你的习惯。很多公司团队专
- 如何用javascript来判定选择单选的radio哪个被选择,多选的checkbox有那几个被选中? <!DOCTYPE
- 思路:利用time函数返回的时间字符串与指定时间字符串做比较,相等的时候执行对应的操作。不知道大家的思路是什么,感觉这样比较耗CPU。。。。
- python中with可以明显改进代码友好度,比如:with open('a.txt') as f:  
- 在注册或购物车结帐的时候,需要用户填入个人资料,这个环节可以简练一下,我们只需客人填入邮政编码,然后就根据这个邮政编码,自动从数据库中取出相
- 在用 Javascript 验证表单(form)中的单选框(radio)是否选中时,很多新手都会遇到问题,原因是 radio 和普通的文本框
- 本文用python写了一个会员管理系统,供大家参考,具体内容如下:"""后台管理员前台会员信息系统1.后台管理
- 由于笔者最近在做一个跨数据库操作的测试,开始做IBatisNet (IBatis.DataMapper.1.6.2/IBatis.DataA
- 为什么很多站长开始做英文网站,我想主要是原因是良好的互联网环境让大家更容易赚到钱,中小站长做英文网站大致为两类,一是电子商务的外贸网站,二是