2017-05-09 92 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' 
相关问题