2014-03-18 69 views
1

我正在一個小項目中搜索一些網頁的一些PII。特別是,我在正確地抓取頁面以提取人們所居住的國家方面遇到了一些困難。造成嚴重破壞的具體例子是印第安納州。我的正則表達式搜索每個頁面上是否存在完整的狀態名稱或狀態縮寫。在這種情況下,由於印第安納州的縮寫是IN,因此返回了很多誤報。因此,我的大小寫不敏感的搜索字面上返回每個網頁,因爲'in'是一個很常見的詞。有什麼聰明的正則表達式或其他技術可以用來消除這種呃逆?我可以嘗試通過查找縮寫後面的逗號來匹配狀態,但有時網頁不包含逗號(即',IN')。有任何想法嗎?爲國家名稱刮網頁

這是我的正則表達式。它看起來了國家全名和由函數調用返回的鍵值對返回該狀態下簡稱:

re.search(r'\b{0}\b|\b{1}\b'.format(state.strip(), stateDictionaryLookup(state.strip())), webpage, re.IGNORECASE) 
+0

僅供參考,它的拼寫'印第安納州',以防萬一你扔... – MattDMo

+0

道歉,拼寫檢查沒有選擇在這裏。 –

+1

爲什麼使用不區分大小寫的搜索,因爲縮寫是IN不在?會有幫助嗎?有什麼你可以錨定 - 例如一個郵政編碼? – PyNEwbie

回答

0

沒有完美的方法可以輕鬆地做到這一點,我知道的。你應該做什麼取決於你想要的假陽性與假陰性的比率。

這裏有幾個觀察,可以幫助:

  • 國家名稱縮寫是之前或之後,;,或.往往比在字
  • 這個詞在幾乎從不在之後,接着是,,;.,而在,,;.之前和之後找到的縮寫不應該是罕見的。
  • 單詞in很少寫成IN,但縮寫IN幾乎總是大寫。
相關問題