Python 为州名称刮取网页

Python 为州名称刮取网页,python,regex,web-scraping,Python,Regex,Web Scraping,我正在做一个小项目,在一组网页上搜索一些PII。特别是,我在正确地抓取页面以提取此人所处的状态方面遇到了一些困难。造成严重破坏的具体例子是印第安纳州。My regex在每页搜索是否存在完整的州名或州缩写。在这种情况下,由于印地安那州的缩写出现了,因此返回了很多误报。所以我的不区分大小写的搜索实际上是返回每个网页,因为“in”是一个非常常见的词。有没有什么聪明的正则表达式或其他技巧可以用来消除这个呃逆?我可以通过查找逗号后跟缩写来匹配状态,但有时网页不包含逗号,即“IN”。有什么想法吗 这是我的正

我正在做一个小项目,在一组网页上搜索一些PII。特别是,我在正确地抓取页面以提取此人所处的状态方面遇到了一些困难。造成严重破坏的具体例子是印第安纳州。My regex在每页搜索是否存在完整的州名或州缩写。在这种情况下,由于印地安那州的缩写出现了,因此返回了很多误报。所以我的不区分大小写的搜索实际上是返回每个网页,因为“in”是一个非常常见的词。有没有什么聪明的正则表达式或其他技巧可以用来消除这个呃逆?我可以通过查找逗号后跟缩写来匹配状态,但有时网页不包含逗号,即“IN”。有什么想法吗

这是我的正则表达式供参考。它查找函数调用返回的键值对返回的状态全名和该状态的缩写:

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

据我所知,没有完美的方法可以轻松做到这一点。你应该做什么取决于你想要的假阳性和假阴性的比率

以下是一些可能有帮助的观察结果:

中的州缩写前面或后面是;,或通常比单词中的单词更常见。 in这个词的前后几乎从来没有;,或者,,,而在缩写词前面加上,,;,并不少见;,或 in这个词很少像in那样写,但in的缩写几乎总是大写。
仅供参考,它的拼写是Indiana,以防万一这会让你……抱歉,拼写检查没有在这里找到它。既然缩写词在not in中,为什么要使用不区分大小写的搜索?那会有帮助吗。是否还有其他可以锚定的内容-例如zipcode?