【问题标题】:Python 3: Searching A Text File SmartlyPython 3:智能搜索文本文件
【发布时间】:2012-03-02 20:20:17
【问题描述】:

我有一个大文本文件 (data),其布局如下:a|b|c|d|e|f(尽管b 中可以有管道)。我使用以下代码搜索文本文件:

results = 0
Data_List = []
searchphrase = input("Search: ")
with open('data', 'r', encoding="utf8") as inF:
    for line in inF:
        if searchphrase in line:
            a, *b, c, d, e, f = line.strip().split('|')
            b = '|'.join(b)
            results += 1
            print("\n\n", results, "\n", "A: " + a + "\n", "B: " + b + "\n", "C: " + c + "\n", "D: " + d + "\n", "E: " + e + "\n", "F: " + f + "\n\n")
            Data_List.append(f)

b 是一段文本,其中包含用户在上面的代码中真正搜索的标题(例如:The Lion King)。但是,搜索非常具体,只返回准确的结果(换句话说,如果我搜索了The Lion King,则不会返回the lion king)。我怎样才能使搜索不那么具体而更笼统(想想 Google 搜索)?

【问题讨论】:

  • 使用正则表达式。就大小写而言,使用正则表达式标志re.IGNORECASE
  • 你的意思是模糊搜索?
  • 模糊搜索可能更像我的意思。正则表达式似乎仍然过于具体,因为我正在处理用户生成的数据和由不同用户生成的搜索词。

标签: python search text python-3.x


【解决方案1】:

你可以看看Whoosh

Whoosh 是一个用于索引文本然后搜索索引的类和函数库。它允许您为您的内容开发自定义搜索引擎。例如,如果您正在创建博客软件,您可以使用 Whoosh 添加搜索功能,以允许用户搜索博客条目。

可以处理:

还有更多... Whoosh 是纯 Python 和 Python 3 兼容的。

不幸的是,模糊搜索与NLP 相关联,这是CS 中最复杂的主题之一,所以它不像使用一些神奇的正则表达式技巧那么容易。

NLP 很难。这就是为什么 Google 使用 Pigeon Cluster 而非计算机算法 (LoL) 来对结果进行排名的原因。

【讨论】:

    猜你喜欢
    • 2021-09-20
    • 2012-03-21
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 2018-09-02
    • 2016-09-22
    • 1970-01-01
    相关资源
    最近更新 更多