2014-02-13 78 views
0

我對python相當陌生。我有一個這樣的字符串獲取字符串中的特定單詞

"DEALER: 'S up, Bubbless? 
BUBBLES: Hey. 
DEALER: Well, there you go. 
JUNKIE: Well, what you got? 
DEALER: I got some starters. " 

我試圖讓大寫字母以冒號結尾。例如,我從上面的字符串中獲得DEALER,BUBBLES和JUNKIE。謝謝

這是我試過。似乎工作。但不如我想要的那麼準確。

s = "DEALER: 'S up, Bubbless? BUBBLES: Hey. DEALER: Well, there you go. JUNKIE: Well, what you got?DEALER: I got some starters."; 
#print l 
print [ t for t in s.split() if t.endswith(':') ] 
+0

歡迎的Python和堆棧溢出!雖然我們許多人會很樂意回答您的問題,但如果您向我們展示您已經嘗試過的內容,我們更有可能瞭解問題並提供有用的答案。 – mhlester

+0

特別是因爲這看起來隱約像一個功課問題.... –

+0

作爲暗示看正則表達式 –

回答

2

你需要擺脫重複。一個不錯的方法是一套。

import re 

mystring = """ 
DEALER: 'S up, Bubbless? 
BUBBLES: Hey. 
DEALER: Well, there you go. 
JUNKIE: Well, what you got? 
DEALER: I got some starters. """ 

p = re.compile('([A-Z]*):') 
s = set(p.findall(mystring)) 

print s 

這導致了一套獨特的名字

set(['JUNKIE', 'DEALER', 'BUBBLES']) 
+0

非常感謝Sir @Graeme Stuart!正是我想要的。 – user3078335

1
import re 

regex = re.compile("(?P<name>[A-Z]*:)[\s\w]*") 

actors = regex.findall(text) 
相關問題