日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python正则表达式使用实例_正则表达式的基础知识,以及Python爬虫中的使用方法...

發布時間:2024/10/14 python 88 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python正则表达式使用实例_正则表达式的基础知识,以及Python爬虫中的使用方法... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、正則表達式

實際上爬蟲一共就四個主要步驟:

  • 明確目標(要知道你準備在哪個范圍或者網站去搜索)
  • 爬(將所有的網站內容全部爬下來)
  • 取(去掉對我們沒有用處的數據)
  • 處理數據
  • 我們在第上一篇文章中介紹的簡單的“貼吧小爬蟲”實際上省略了第3步,也就是“取”的步驟。因為我們down下了的數據是全部的網頁,這些數據是很龐大并且混亂的,大部分的東西使我們不關心的,因此我們需要將之過濾出來。

    那么對于文本的過濾或者規則的匹配,這里就有個學問,就是“正則表達式”

    說道正則表達式很多人都頭疼,確實,這個東西是學習精通并且應用熟練實屬于一件蛋疼的事。

    圖片源于網絡,侵刪

    但是作為一個工程師,要有一種思維,就是用到學到。用到3分要學4分,如果要用到7分,我們就要學到8分。

    1.正則表達式基礎

    正則表達式是用于處理字符串的強大工具,并不是屬于某種編程語言。

    正則表達式擁有獨立的處理引擎,不管是什么編程語言,正則表達式的語法都是一樣的。

    2.正則表達式匹配過程

    • 一次拿出表達式和文本中的字符比較
    • 如果每一個字符都能匹配,則匹配成功;一旦匹配不成功的字符則匹配失敗
    • 如果表達式中有量詞或邊界,這個過程會稍微有一些不同

    特殊構造(不作為分組)

    3.數量詞的貪婪模式與非貪婪模式

    正則表達式通常用于文本中的查找匹配的字符串

    貪婪模式,總是嘗試匹配盡可能多的字符;

    非貪婪模式則相反,總是嘗試匹配盡可能少的字符

    (Python里的數量詞默認是貪婪的)

    • 例如:

    正則表達式"ab*"如果用于查找"abbbc",將找到“abbb”。

    而如果使用非貪婪的數量詞“ab*?",將找到"a"

    4.Python中如何使用正則表達式

    Python中是通過一個叫“re”的包來支持正則表達式。

    當然具體的“re”中的方法,可以在Python的命令行中

    localhost:spider ldb$ python Python 2.7.10 (default, Jul 14 2015, 19:46:27) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin Type "help", "copyright", "credits" or "license" for more informati on. >>> import re >>> help(re)

    進行查看。

    這里面我們知識做一個簡單的正則匹配。

    首先可以創建一個re_test.py文件

    # -*- coding: utf-8 -*-#引入正則表達式re模塊 import re#re 模塊提供一個方法叫compile模塊,提供我們輸入一個匹配的規則 #然后返回一個pattern實例,供我們根據這個規則去匹配一些我們自定義的字符串 pattern = re.compile(r'd+.d*')result = pattern.findall("3.14158912312, 3.123123213, 232312, 3.15") #findall 將返回全部匹配到的字符串列表給result for item in result:print item

    我們來詳細的分析一下上面的代碼,首先:

    # -*- coding: utf-8 -*-

    表示當前的Python文件的編碼格式是"utf-8"

    import re

    re模塊提供一個方法叫compile模塊,提供我們輸入一個匹配的規則

    然后返回一個pattern實例,供我們根據這個規則去匹配一些我們自定義的字符串

    pattern = re.compile(r'd+.d*)

    這里我們傳遞的是'd+.*'表達式

  • d 表示數字[0-9]
  • + 表示重復出現上一次匹配的1次或n次
  • . 表示字符’.’
  • * 表示重復出現上一次匹配的0次或n次r 實際上是python告訴編譯器這個字符串中的全部轉義字符失效,按照原始字符串處理。
  • 所以d+.d*實際上是表示匹配小樹的規則

    能夠匹配到123.12312,1321.1等小數

    但是匹配不到666,abc等非小數的字符串

    由于我們已經簡歷好了一個能夠匹配‘?d+.?d*’規則的partten對象。

    通過partten的findall方法就能夠匹配到我們得到的字符串。

    返回的是一個匹配到字符串的列表 []

    所以運行結果如下:

    localhost:spider ldb$ python re_test.py 3.14158912312 3.123123213 3.15

    findall(“3.14158912312, 3.123123213, 232312 , 3.15”)中的 232312 沒有匹配

    總結

    以上是生活随笔為你收集整理的python正则表达式使用实例_正则表达式的基础知识,以及Python爬虫中的使用方法...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。