【问题标题】:How to extract an excerpt from the content variable?如何从内容变量中提取摘录?
【发布时间】:2015-04-30 08:03:42
【问题描述】:

我正在搜索分层字典,我必须将内容放入名为“内容”的变量中:

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

但“内容”应该是文本的摘录,而不是完整的内容,即搜索词组后面的几个词和前面的几个词。

例如:

短语:“寻找

内容:……她在寻找他……

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

【问题讨论】:

标签: python django string search


【解决方案1】:

你的问题是你只知道s in content——换句话说,你知道字符串在那里某处,但你需要知道在哪里获取上下文。

只需改用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))真的是您想要的吗?例如,如果我搜索“sing out”,应该在“星星正在失去外层”中找到吗?

【讨论】:

  • 问题是,在我的情况下,所需的单词也可以在一个内容中多次找到。所以我得找几个匹配的词。
  • @paus:没关系。查看find 的其他参数,应该很明显如何查找其他匹配项。
  • 我不确定,“pos = content.find(s)”是否适合我的情况,因为单词可以改变它们的形式,所以我需要结合使用 pymorphy2 之类的东西find() 函数。
  • @paus:好的,如果您需要的东西不在您的原始问题中,但您知道自己需要什么,那应该不是问题。 (如果你在尝试实现它时遇到了困难,那么你就有了一个新问题。)
猜你喜欢
  • 2013-07-10
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2022-07-18
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
相关资源
最近更新 更多