Python 去除字符串中指定字符串
1、背景
最近的項(xiàng)目中,再次踩到Python字符串處理的坑,決定把此次解決方案記錄一下,以勿踩坑。
2、遇到坑
原本字符串:大坪英利國際8號(hào)樓88-88號(hào)重慶漢喬科技有限公司大坪英利國際8號(hào)樓去除最左邊的字符串:大坪英利國際8號(hào)樓預(yù)期結(jié)果:88-88號(hào)重慶漢喬科技有限公司大坪英利國際8號(hào)樓
自然而然,第一個(gè)想到的就是lstrip()函數(shù)。
Python中l(wèi)strip() 方法用于截掉字符串左邊的空格或指定字符。但實(shí)際上結(jié)果:
lstrip: -88號(hào)重慶漢喬科技有限公司大坪英利國際8號(hào)樓
3、找到 lstrip() 坑的真相
函數(shù)原型:
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 方法是 比對(duì)字符 并去除,而不是簡(jiǎn)單的去除最左邊字符串。那好,再驗(yàn)證一下:
'重慶重慶師范大學(xué)'.lstrip('重慶')
結(jié)果:
師范大學(xué)
那我想簡(jiǎn)單的去除字符串中的首個(gè)指定字符串,最好不用 lstrip() 了。于是又想到了split 方法 和 replace 方法……
4、解決方案
4.1、方法1 split
函數(shù)原型:
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
函數(shù)原型:
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: ZhenYuShaCreateTime: 2020-2-26Info: 去除字符串中 首個(gè)指定字符串'''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_spif __name__ == ’__main__’: tmp_1, tmp_2, tmp_3 = run('大坪英利國際8號(hào)樓88-88號(hào)重慶漢喬科技有限公司大坪英利國際8號(hào)樓', '大坪英利國際8號(hào)樓') 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('重慶重慶師范大學(xué)', '重慶') print('test_2 lstrip:', tmp_1) print('test_2 replace:', tmp_2) print('test_2 split:', tmp_3)
5.2、效果
6、延伸
split 和 replace 可以解決字符串首個(gè)指定字符串去除問題, 但去除字符串這個(gè)問題不僅僅是去除就完了,還要去判斷是否符合我們的要求。
6.1、看字符串開頭是否是指定字符串
如果需要以指定字符串開頭,要用 startswith 函數(shù)來判斷。
6.2、看字符串中是否存在指定字符串
如果不存在指定字符串,直接用 split 和 replace 會(huì)直接崩潰的,那就需要 find 函數(shù)來查看了。
到此這篇關(guān)于Python 去除字符串中指定字符串的文章就介紹到這了,更多相關(guān)Python 去除字符串 內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. IntelliJ IDEA導(dǎo)入jar包的方法2. Python requests庫參數(shù)提交的注意事項(xiàng)總結(jié)3. vue-electron中修改表格內(nèi)容并修改樣式4. python ansible自動(dòng)化運(yùn)維工具執(zhí)行流程5. 匹配模式 - XSL教程 - 46. python操作mysql、excel、pdf的示例7. JavaScript中l(wèi)ayim之整合右鍵菜單的示例代碼8. SpringBoot參數(shù)校驗(yàn)與國際化使用教程9. 通過Python pyecharts輸出保存圖片代碼實(shí)例10. 詳談ajax返回?cái)?shù)據(jù)成功 卻進(jìn)入error的方法
