2013-02-28 123 views
0

我正在Python中使用正則表達式,我正在努力解決這個問題。 我有數據線的像這樣的文件:從一行中提取文本:Python中的正則表達式

|person=[[Old McDonald]] 

,我只是希望能夠從該行提取Old McDonald

我一直在試圖用正則表達式:

matchLine = re.match(r"\|[a-z]+=(\[\[)?[A-Z][a-z]*(\]\])", line) 
print matchLine 

,但它不工作;每次都是None

+0

提取意味着你要改變'line'? – 2013-02-28 09:07:24

+0

我只是希望能夠從這一行中存儲舊麥當勞,所以我可以把它放在字典中。 – user2057841 2013-02-28 09:10:36

回答

3

構造[A-Z][a-z]*不符合Old McDonald。你可能應該使用類似[A-Z][A-Za-z ]*的東西。這裏是代碼示例:

import re 
line = '|person=[[Old McDonald]]' 
matchLine = re.match ('\|[a-z]+=(?:\[\[)?([A-Z][A-Za-z ]*)\]\]', line) 
print matchLine.group (1) 

輸出爲Old McDonald對我來說。如果您需要在字符串中間搜索,使用re.search代替re.match

import re 
line = 'blahblahblah|person=[[Old McDonald]]blahblahblah' 
matchLine = re.search ('\|[a-z]+=(?:\[\[)?([A-Z][A-Za-z ]*)\]\]', line) 
print matchLine.group (1) 
+0

@ user2057841查看我的示例程序。這個對我有用。 – 2013-02-28 09:13:45

+0

謝謝!我剛看到它:)我會試試這個,非常感謝。 – user2057841 2013-02-28 09:15:22

+0

對不起,我認爲它不適合我。我得到這個錯誤:AttributeError:'NoneType'對象沒有屬性'組' – user2057841 2013-02-28 09:20:57

相關問題