簡單介紹Python 如何擷取字元函式

大雄45發表於2023-04-17
導讀 這篇文章主要介紹了Python 如何擷取字元函式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
如何擷取字元函式

在工作中我們經常會遇到某種情況需要擷取字串中某個特定標籤之間的內容(爬蟲可能用到的較多),適用於很多情況例如字串形式的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 = '
#獲取索引為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 = '
    #獲取索引從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 = '
    #獲取從索引5開始,直到末尾的子串
    print(url[7: ])
    #獲取從索引-21開始,直到末尾的子串
    print(url[-21: ])
    #從開頭擷取字串,直到索引22為止
    print(url[: 22])
    #每隔3個字元取出一個字元
    print(url[:: 3])

    執行結果:

    c.biancheng.net/java/
    c.biancheng.net/java/
    hp/bne.ta/

    原文來自:


    來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2945097/,如需轉載,請註明出處,否則將追究法律責任。

    相關文章