2017-05-09 94 views
-1

我試圖在特定的單詞之後記錄該單詞。例如,假設我有一個字符串:查找字符串中的單詞之後的下一個單詞

First Name: John 
Last Name: Doe 
Email: [email protected] 

我想搜索關鍵字(如「名:」)的字符串。然後,我只想捕捉下一個詞,在這種情況下,約翰。

我開始使用string.find("First Name:"),但我不認爲這是正確的方法。

我可以使用一些幫助。大多數例子要麼分割字符串,要麼在「John」之後保留其他所有內容。我的目標是能夠搜索特定關鍵字的字符串,而不用考慮其位置。

SOLUTION: 我用一組類似的代碼如下:

search = r"(First Name:)(.)(.+)" 
x = re.compile(search) 

這給我的「約翰」不帶空格

+2

爲什麼不使用字典呢? –

+0

在這個網站,通過upvoting所有有用的答案顯示你的讚賞。您可以通過點擊答案左上角的向上箭頭來實現。另外,通過單擊答案左上角附近的複選標記接受最佳答案(如果它實際上回答您的問題)。這比在評論中表示感謝要好。它也可以幫助其他人看到你的問題得到了回答。 –

回答

0

正則表達式是去

import re 
pattern = r"(?:First Name\:).+\b" 
first_names = re.findall(pattern, mystring) 
方式

它會找到沒有提取r的前綴(名字:)「(?:First Name:) 然後提取。+ \ b表示一個單詞。或者您可以拆分字符串和結果列表中的結果列表

my_words = [ x.split()[0] for x in my_string.split("First Name: ")] 
+0

謝謝!我相信正則表達式是要走的路。 –

0

.find方法是一個好的開始。 您可以在剩餘的字符串上使用拆分來將結果限制爲單個單詞。

不使用正則表達式

s = "abc def opx" 
q = 'abc' 
res = s[s.find(q)+len(q):].split()[0] 

res == 'def' 
相關問題