正規表示式 Regular Expression

做數據分析有一件很重要的事情,那就是要先有數據或資料,然而然而,一般人很難拿到大量可分析數據。所以接下來我們要學著如何從網站上挖掘資料來分析,不過在進行分析之前,我們必須要先學會幾樣有用的工具,今天要討論的主題是:正規表示式 !!

基本上呢,利用 Python,我們可以把網路上的資料爬下來變成我們自己的資料庫,然而要變成有用的資料我們必須對抓下來的東西做 ” 清理 “,大家想像一下一個場景:有一天如果把所有維基百科的文章都抓下來,你會發現一點意義也沒有,事實上可能更難找出你要的資訊。抓下來的資料要能有效利用,我們必須從這些文章中取出我們要的資訊 !! 正規表示式一個很重要工具:利用他可以擷取你要的文字部分後,進行儲存或修改。

下面先介紹幾個常用到的規則:

擷取的內容:

[A-Z] 大寫的A-Z
[a-z] 小寫的a-z
[A-Za-z] 大小寫的英文字母
[0-9] 數字 0-9
. \n之外的所有字元
\s 空白字元

內容的指定方式:

+ 前面的條件出現一次或是一次以上。
* 前面的條件出現零次或是一次以上。
$ 輸入字串結束。
^ 出入字串開始。

好啦~~接下在我們就可以用這幾個條件來寫我們的正則表示式囉 !! 但是在開始之前大家可以先看看這個網站 : https://pythex.org/

在這個網站裡面,我們可以試著寫寫看自己的正則表示式,完成後他會將符合的部分用綠色畫出來,大家可以先在這邊測試自己寫的對不對,因為在寫正則表示式的時候很容易發生一些沒意料到的問題~~

  • 擷取電話號碼:

在這邊[0-9-]+代表我們取 0-9 的數字,後面的 “-” 則是因為可能會在電話號碼中出現,所以我們也要把他加進去。所以如果我們要擷取網頁上的電話(或是任何一串數字),就成功地擷取下來啦~(號碼是我隨便編造的,怕不小心用到真實的號碼….不過原理是一樣的喔~)

 

  • 擷取信箱:

如果是想要抓到每這串文字中的信箱,所以我們需要先分析信箱的特徵,再來寫code抓出來,首先[a-zA-Z0-9_]+中代表所以英文、數字以及下底線,而+則表示只要出現一次或是一次以上。接著前面打完後會遇到@後面的英文的格式則會是多一個點所以要記得補上一個.,像這樣[a-zA-Z0-9.]+。綠色的部分可以確認我們寫得沒錯~~

當然上面的這些只是正規表示式的一小部分,不過一些基本的資料其實就很夠用了,大家可以自己試試看想要擷取那些資料,並且在 Pythex 上看看是不是抓到預期的資料~~

 

 

Facebook Comments

發表迴響