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 rere模塊提供一個方法叫compile模塊,提供我們輸入一個匹配的規則
然后返回一個pattern實例,供我們根據這個規則去匹配一些我們自定義的字符串
pattern = re.compile(r'd+.d*)這里我們傳遞的是'd+.*'表達式
所以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.15findall(“3.14158912312, 3.123123213, 232312 , 3.15”)中的 232312 沒有匹配
總結
以上是生活随笔為你收集整理的python正则表达式使用实例_正则表达式的基础知识,以及Python爬虫中的使用方法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从python存入的文件是乱码_如何解决
- 下一篇: python pyqt5 窗体自适应_P