2014-10-08 58 views
0

iam新增了Python,並且有一些簡單的問題(但它們正在殺死我)。在文本中發現特定單詞的一些問題

我想要一個代碼,告訴我「博士」後面的單詞,但只有當下面的單詞是標題時纔會顯示,例如Bernard博士。我同樣需要許多其他的東西,比如「med」。等等...

這裏我的代碼:

sentence = "Dr. Mobuis is a good person. Dr. med. Peter isnt." 
    for m in re.finditer("(Dr\.|med\.)\s([A-Z][a-z]+)", sentence): 
     print '%02d-%02d: %s' % (m.start(), m.end(), m.group(0)) 

好了,現在我得到:

00-10: Dr. Mobuis 
    33-43: med. Peter 

我想擺脫 「博士」 的和「med。」。怎麼樣?或者有更好的方法來解決問題嗎?

回答

0

只需打印組索引2,而不是組索引0

>>> for m in re.finditer("(Dr\.|med\.)\s([A-Z][a-z]+)", sentence): 
...  print '%02d-%02d: %s' % (m.start(), m.end(), m.group(2)) 
... 
00-10: Mobuis 
33-43: Peter 

更新:

>>> for m in re.finditer("(Dr\.|med\.)\s([A-Z][a-z]+)\s\S+", sentence):...  print '%02d-%02d: %s - context is %s' % (m.start(), m.end(), m.group(2),m.group(0)) 
... 
00-13: Mobuis - context is Dr. Mobuis is 
33-49: Peter - context is med. Peter isnt. 
+0

謝謝!有時我可能真的很愚蠢。謝謝。這至少解決了博士和醫學的問題。 – 2014-10-08 11:12:31

+0

有沒有可能獲得Mobuis和Peter的背景?現在我得到索引,但是如果我想要上下文呢?例如「00-10:Mobuis - 背景是'Dr. Mobius'。前面的單詞和後面的單詞? – 2014-10-08 11:24:24

+0

上下文的意思是?結果是什麼? – 2014-10-08 11:25:35

0
(?<=Dr.)\s*(\b[A-Z]\w+\b) 

試試這個。抓住匹配。

http://regex101.com/r/hQ1rP0/75

+0

如果你添加相應的Python代碼會更好。 – 2014-10-08 11:06:36

+0

嗯,我不知道我做錯了什麼,但我沒有得到任何輸出?! – 2014-10-08 11:19:31

相關問題