我有一个包含大约10行文本的字符串。我想做的是找到一个包含特定单词的句子,然后显示以下单词。
示例字符串:
棕色狐狸
慢驴
流口水狗
毛茸茸的猫
我希望脚本搜索'the slow',然后打印以下单词,在这种情况下为'donkey'。
我尝试使用“查找”功能,但这只是打印单词的位置。
示例代码:
sSearch = output.find("destination-pattern")
print(sSearch)
任何帮助将不胜感激。
答案 0 :(得分:1)
output = "The slow donkey brown fox"
patt = "The slow"
sSearch = output.find(patt)
print(output[sSearch+len(patt)+1:].split(' ')[0])
输出:
donkey
答案 1 :(得分:0)
您可以使用正则表达式。 Python内置了一个名为re的库。
用法示例:
s = "The slow donkey some more text"
finder = "The slow"
idx_finder_end = s.find(finder) + len(finder)
next_word_match = re.match(r"\s\w*\s", s[idx_finder_end:])
next_word = next_word_match.group().strip()
# donkey
答案 2 :(得分:0)
我将按照以下方式使用正则表达式(re
模块)来实现它:
import re
txt = '''The quick brown fox
The slow donkey
The slobbery dog
The Furry Cat'''
words = re.findall(r'(?<=The slow) (\w*)',txt)
print(words) # prints ['donkey']
请注意,words
现在是单词的list
,如果您确定只找到一个单词,则可以这样做:
word = words[0]
print(word) # prints donkey
说明:我在re.findall
的第一个参数中使用了所谓的 lookbehind断言,这意味着我正在寻找The slow
之后的东西。 \w*
表示由以下组成的任何子字符串:字母,数字,下划线(_
)。我将它放在组(方括号)中,因为它不是单词的一部分。
答案 3 :(得分:0)
您可以使用正则表达式来做到这一点:
>>> import re
>>> r=re.compile(r'The slow\s+\b(\w+)\b')
>>> r.match('The slow donkey')[1]
'donkey'
>>>