我正在搜索分层字典,我必须将内容放入名为“content”的变量中:
def look_through(d, s):
r = []
content = readFile(d["path"])
if s in content:
if "phrase" not in d:
d["phrase"] = [s]
else:
d["phrase"].append(s)
r.append({"content": content, "phrase": d["phrase"], "name": d["name"]})
for b in d["decendent"] or []:
r += look_through(b, s)
return r
但是“内容”应该是文本的一个例外,而不是完整的内容,即后面的几个单词和搜索短语前面的几个单词。
E.g:
短语:“正在寻找”
内容:......她正在寻找他......
如何裁剪函数中的内容以实现此结果? 谢谢!
答案 0 :(得分:0)
你的问题是所有你知道的是s in content
- 换句话说,你知道字符串在某处,但你需要知道 where 获取上下文。
只需使用content.find(s)
,您就可以拥有:
pos = content.find(s)
if pos != -1:
if "phrase" not in d:
# etc.
现在,要查找""背后的几个单词,只需向后搜索pos
中的几个单词分隔符,然后找到"前面几个单词",向前搜索来自pos + len(s)
的几个单词分隔符。
当然,你必须定义几个"几个"意味着什么构成一个单词分隔符,但你应该能够从这里解决剩下的问题。 (确保您在文档中看到rfind
和find
,并查看这两种方法的所有参数,并且不要忘记处理s
的边缘情况在content
的开头或结尾附近找到。)
最后一点注意事项:您确定s in content
(以及,等同于content.find(s)
)是否真的符合您的要求?例如,如果我搜索"唱出",应该在&#34中找到;明星正在失去外层"?