網站首頁 編程語言 正文
如何截取字符函數
在工作中我們經常會遇到某種情況需要截取字符串中某個特定標簽之間的內容(爬蟲可能用到的較多),適用于很多情況例如字符串形式的xml報文、json格式的字符串以及其它類型的字符串。
因為我總結了有關字符串截取的兩個函數來記錄一下,以供參考。
# 方法一:簡單截取不重復標簽中的內容 def substr(mystr, startStr, endChar): ? ? ''' ? ? 自定義字符串截取函數:只從字符串中第一次遇見的內容 ? ? ''' ? ? startStr_len = len(startStr) ? ? start_index = mystr.index(startStr) ? ? end_index = mystr.index(endChar) ? ? return mystr[start_index+startStr_len:end_index] ? ''' a = 'abc111bcd abc222bcd' result = substr(a, 'abc', 'bcd') ? ?# result='111' ''' ? # 方法二:重復截取標簽中的內容并將結果作為列表返回 def substr_to_list(mystr, startStr, endChar): ? ? '''自定義字符串截取函數''' ? ? result = [] ? ? position = 0 ? ? while True: ? ? ? ? ? ? ? ?# 因為index()函數如果沒有找到想要的內容會報異常ValueError ? ? ? ? try: ? ? ? ? ? ? ? ? ? ? ? ? startStr_len = len(startStr) ? ? ? ? ? ? endChar_len = len(endChar) ? ? ? ? ? ? start_index = mystr.index(startStr, position) ? ? ? ? ? ? end_index = mystr.index(endChar, position) ? ? ? ? ? ? position = end_index + endChar_len ? ? ? ? ? ? result.append(mystr[start_index+startStr_len:end_index]) ? ? ? ? except Exception as e: ? ? ? ? ? ? break ? ? return result ''' a = 'abc111bcd abc222bcd' result = substr(a, 'abc', 'bcd') ? ?# result=['111','222'] '''
效率方面就沒有考慮啦,畢竟都用python了還考慮什么效率,哈哈!
截取字符串(字符串切片)
字符串
從本質上講,字符串是由多個字符構成的,字符之間是有順序的,這個順序號就稱為索引(index)。Python 允許通過索引來操作字符串中的單個或者多個字符,比如獲取指定索引處的字符,返回指定字符的索引值等。
獲取單個字符
知道字符串名字以后,在方括號[ ]中使用索引即可訪問對應的字符,具體的語法格式為:
strname[index]
strname
表示字符串名字,index 表示索引值。
Python 允許從字符串的兩端使用索引:
- 當以字符串的左端(字符串的開頭)為起點時,索引是從 0 開始計數的;字符串的第一個字符的索引為 0,第二個字符的索引為 1,第三個字符串的索引為 2 ……
- 當以字符串的右端(字符串的末尾)為起點時,索引是從 -1 開始計數的;字符串的倒數第一個字符的索引為 -1,倒數第二個字符的索引為 -2,倒數第三個字符的索引為 -3 ……
請看下面的實例演示:
url = 'http://c.biancheng.net/python/' #獲取索引為10的字符 print(url[10]) #獲取索引為 6 的字符 print(url[-6])
運行結果:
i
y
獲取多個字符(字符串截去/字符串切片)
使用[ ]除了可以獲取單個字符外,還可以指定一個范圍來獲取多個字符,也就是一個子串或者片段,具體格式為:
strname[start : end : step]
對各個部分的說明:
-
strname
:要截取的字符串; -
start
:表示要截取的第一個字符所在的索引(截取時包含該字符)。如果不指定,默認為 0,也就是從字符串的開頭截取; -
end
:表示要截取的最后一個字符所在的索引(截取時不包含該字符)。如果不指定,默認為字符串的長度; -
step
:指的是從 start 索引處的字符開始,每 step 個距離獲取一個字符,直至 end 索引出的字符。step 默認值為 1,當省略該值時,最后一個冒號也可以省略。
【實例1】基本用法:
url = 'http://c.biancheng.net/java/' #獲取索引從7處到22(不包含22)的子串 print(url[7: 22]) # 輸出 zy #獲取索引從7處到-6的子串 print(url[7: -6]) # 輸出 zyit.org is very #獲取索引從-21到6的子串 print(url[-21: -6]) #從索引3開始,每隔4個字符取出一個字符,直到索引22為止 print(url[3: 22: 4])
運行結果:
c.biancheng.net
c.biancheng.net
c.biancheng.net
pcaen
【實例2】高級用法,start、end、step 三個參數都可以省略:
url = 'http://c.biancheng.net/java/' #獲取從索引5開始,直到末尾的子串 print(url[7: ]) #獲取從索引-21開始,直到末尾的子串 print(url[-21: ]) #從開頭截取字符串,直到索引22為止 print(url[: 22]) #每隔3個字符取出一個字符 print(url[:: 3])
運行結果:
c.biancheng.net/java/
c.biancheng.net/java/
http://c.biancheng.net
hp/bne.ta/
原文鏈接:https://blog.csdn.net/ajklsdnal/article/details/108057925
相關推薦
- 2022-09-07 Python的flask常用函數route()_python
- 2022-05-11 linq中的連接操作符_實用技巧
- 2022-06-24 python函數常見關鍵字分享_python
- 2022-06-01 Snort中pcre和正則表達式的使用詳解_正則表達式
- 2022-07-16 gitee設置ssh key
- 2022-07-06 使用GO操作MongoDB的方法_Golang
- 2022-07-09 Android實現app開機自啟動功能_Android
- 2022-11-14 Go語言文件讀寫操作案例詳解_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支