Python 爬蟲庫以及庫函數總結&&踩坑

 

1. Re庫的基本使用

  • Re庫介紹:

    • Re庫是Python的標準庫,主要用於字符串匹配。

    • 調用方式:import re

  • 正則表達式的表示類型:

    • raw string類型(原生字符串類型):

      • re庫採用raw string類型表示正則表達式,表示爲:r'text'

      • 例如:r'[1-9]\d{5}'

      • raw string是指不包含轉義符的字符串

    • string類型,更繁瑣。

      • 例如:'[1-9]\\d{5}';'\\d{3}-\\d{8}|\\d{4}-\\d{7}'

    當正則表達式包含轉義符時,建議使用raw string類型來表示正則表達式。

  • Re庫主要功能函數:

函數

說明

re.search()

在一個字符串中搜索匹配正則表達式的第一個位置,返回match對象

re.match()

從一個字符串的開始位置起匹配正則表達式,返回match對象

re.findall()

搜索字符串,以列表類型返回全部能匹配的字符串

re.split()

將一個字符串按照正則表達式匹配結果進行分割,返回列表類型

re.finditer()

搜索字符串,返回一個匹配結果的迭代類型,每個迭代元素是match對象

re.sub()

在一個字符串中替換所有匹配正則表達式的子串,返回替換後的字符串

re.compile() 返回的是一個匹配對象,它單獨使用就沒有任何意義,需要和findall(), search(), match()搭配使用。 
  • re.search(pattern,string,flags=0)

    • 在一個字符串中搜索匹配正則表達式的第一個位置,返回match對象。

      • pattern:正則表達式的字符串或原生字符串表示

      • string:待匹配字符串

      • flags:正則表達式使用時的控制標記

        • re.I(re.IGNORECASE):忽略正則表達式的大小寫,[A-Z]能夠匹配小寫字符

        • re.M(re.MULTILINE):正則表達式中的^操作符能夠將給定字符串的每行當作匹配開始

        • re.S(re.DOTALL):正則表達式中的.操作符能夠匹配所有字符,默認匹配除換行外的所有字符****!!!!****

                          

  • re.match(pattern, string, flags = 0)

    • 從一個字符串的開始位置起匹配正則表達式,返回match對象。

      • pattern:正則表達式的字符串或原生字符串表示

      • string:待匹配字符串

      • flags:正則表達式使用時的控制標記

                            

  • re.findall(pattern, string, flags = 0)

    • 搜索字符串,以列表類型返回全部能匹配的子串。

      • pattern:正則表達式的字符串或原生字符串表示

      • string:待匹配字符串

      • flags:正則表達式使用時的控制標記

                            

  • re.split(pattern, string, maxsplit = 0, flags = 0)

    • 搜索字符串,以列表類型返回全部能匹配的子串。

      • pattern:正則表達式的字符串或原生字符串表示

      • string:待匹配字符串

      • maxsplit:最大分割數,剩餘部分作爲最後一個元素輸出

      • flags:正則表達式使用時的控制標記

                            

  • re.finditer(pattern, string, flags = 0)

    • 搜索字符串,返回一個匹配結果的迭代類型,每個迭代元素是match對象。

      • pattern:正則表達式的字符串或原生字符串表示

      • string:待匹配字符串

      • flags:正則表達式使用時的控制標記

                               

  • re.compile()

    compile()的定義:

    compile(pattern, flags=0) 
    Compile a regular expression pattern, returning a pattern object.

    從compile()函數的定義中,可以看出返回的是一個匹配對象,它單獨使用就沒有任何意義,需要和findall(), search(), match()搭配使用。 
    compile()與findall()一起使用,返回一個列表。

    import re
    
    def main():
        content = 'Hello, I am Jerry, from Chongqing, a montain city, nice to meet you……'
        regex = re.compile('\w*o\w*')
        x = regex.findall(content)
        print(x)
    
    
    if __name__ == '__main__':
        main()
    # ['Hello', 'from', 'Chongqing', 'montain', 'to', 'you']


    compile()與match()一起使用,可返回一個class、str、tuple。但是一定需要注意match(),從位置0開始匹配,匹配不到會返回None,返回None的時候就沒有span/group屬性了,並且與group使用,返回一個單詞‘Hello’後匹配就會結束。

    import re
    
    def main():
        content = 'Hello, I am Jerry, from Chongqing, a montain city, nice to meet you……'
        regex = re.compile('\w*o\w*')
        y = regex.match(content)
        print(y)
        print(type(y))
        print(y.group())
        print(y.span())
    
    
    if __name__ == '__main__':
        main()
    # <_sre.SRE_Match object; span=(0, 5), match='Hello'>
    # <class '_sre.SRE_Match'>
    # Hello
    # (0, 5)

    compile()與search()搭配使用, 返回的類型與match()差不多, 但是不同的是search(), 可以不從位置0開始匹配。但是匹配一個單詞之後,匹配和match()一樣,匹配就會結束。

     

  • re.sub(pattern, repl, string, count = 0, flags = 0)

    • 在一個字符串中替換所有匹配正則表達式的子串,返回替換後的字符串。

      • pattern:正則表達式的字符串或原生字符串表示

      • repl:替換匹配字符串的字符串

      • string:待匹配字符串

      • count:匹配的最大替換次數

      • flags:正則表達式使用時的控制標記

                            

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章