我試圖從字符串中獲取文本塊。我試圖使用方法:Python的正則表達式不工作從維基頁面提取信息
def findPersonInfo(self):
if (self.isPerson == True):
regex = re.compile("\{\{persondata(.*)\}\}",re.IGNORECASE|re.MULTILINE|re.UNICODE)
result = regex.search(self._rawPage)
if result:
print 'Match found: ', result.group()
的字符串是:(是的,它的維基頁面)
*[http://www.jsc.nasa.gov/Bios/htmlbios/acaba-jm.html NASA biography]
{{NASA Astronaut Group 19}}
{{Persondata
|NAME= Acaba, Joseph Michael "Joe"
|ALTERNATIVE NAMES=
|SHORT DESCRIPTION=[[Hydrogeologist]]
|DATE OF BIRTH={{Birth date and age|1967|5|17}}
|PLACE OF BIRTH=[[Inglewood, California]]
|DATE OF DEATH=
|PLACE OF DEATH=
}}
{{DEFAULTSORT:Acaba, Joseph M.}}
[[Category:1967 births]]
,但我一直沒有得到匹配。
只是一對夫婦的風格的註釋:1)你可以刪除括號圍繞條件(Python'if'語句不需要它們,如第二個'if result:'所示),2)除非你真的想比較'self.isPerson'是否爲'True'並且沒有其他值,你應該簡單地使用'if self.isPerson:...',3)PEP 8 [推薦](http://www.python.org/dev/peps/pep-0008/#function-names)使用'find_person_info '和'self.is_person'命名約定,4)regexen通常用原始的'r'...'字符串指定,以避免反斜槓轉義問題。 –
還有一件事:如果'self.isPerson'爲false,則不會設置局部變量'result'(因此會導致異常)。你是否打算把第二個「if」縮進一層? –
@benhoyt - 感謝您的評論,我是python的新手,所以仍然學習所有的python風格約定。第二如果應該縮進一個級別:) – Justin808