如何从内容变量中提取摘录?

时间:2015-04-30 08:03:42

标签: python django string search

我正在搜索分层字典,我必须将内容放入名为“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:

短语:“正在寻找

内容:......她正在寻找他......

如何裁剪函数中的内容以实现此结果? 谢谢!

1 个答案:

答案 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)的几个单词分隔符。

当然,你必须定义几个"几个"意味着什么构成一个单词分隔符,但你应该能够从这里解决剩下的问题。 (确保您在文档中看到rfindfind,并查看这两种方法的所有参数,并且不要忘记处理s的边缘情况在content的开头或结尾附近找到。)

最后一点注意事项:您确定s in content(以及,等同于content.find(s))是否真的符合您的要求?例如,如果我搜索"唱出",应该在&#34中找到;明星正在失去外层"?