如何在Python中找到一个单词旁边的下一个单词

5
我想在Python中查找一个单词的出现,并打印该单词后面的单词。这些单词以空格分隔。
例如: 如果文件中出现“sample”“thisword”的单词,则希望获取“thisword”。我需要一个正则表达式,因为“thisword”不断变化。

“next to”是指在之前、之后还是两者都包含?可以提供一个你将要搜索的句子示例和你要提取的单词吗? - Jason Sperske
此外,那个单词可以出现多次吗?那又怎么办? - Tim Pietzcker
我所说的“next to”是指在同一行中该单词之后出现另一个单词,并且该单词出现多次。我需要一个正则表达式来获取指定单词之后出现的单词。 - Vamsi Varanasi
@JonClements 我认为我需要一个正则表达式,可以像我的示例中所示给出“thisword”作为结果,因为“thisword”始终在变化。 - Vamsi Varanasi
我一直在研究Python库中的回顾正则表达式。我认为这符合我的要求。你能否建议我其他的方法? - Vamsi Varanasi
显示剩余2条评论
3个回答

32

Python字符串有一个内置的split方法,它将字符串拆分为由空白字符(文档)分隔的单词列表,它具有控制拆分方式的参数,您可以在列表中搜索所需单词并返回下一个索引。

your_string = "This is a string"
list_of_words = your_string.split()
next_word = list_of_words[list_of_words.index(your_search_word) + 1]

3
听起来您需要一个函数。
>>> s = "This is a sentence"
>>> sl = s.split()
>>> 
>>> def nextword(target, source):
...   for i, w in enumerate(source):
...     if w == target:
...       return source[i+1]
... 
>>> nextword('is', sl)
'a'
>>> nextword('a', sl)
'sentence'
>>> 

当然,你需要进行一些错误检查(例如,避免“掉到”末尾)和可能的while循环,以便获取目标的所有实例。但这应该可以让你开始了。


1
一个非常简单的方法:

s = "this is a sentense"
target = "is"
words = s.split()
for i,w in enumerate(words):
    if w == target:
        # next word
        print words[i+1]
        # previous word
        if i>0:
            print words[i-1]

这不起作用,因为单词“is”始终在变化。所以我认为最好使用正则表达式来完成这个任务。 - Vamsi Varanasi
你想提供更多关于目标单词如何变化的细节,以便思考如何重写程序吗? - Vasilis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接