Python:如何按子串相关性对字符串列表进行排序?

2023-11-30

我有一些字符串列表,例如:

["foo bar SOME baz TEXT bob",
"SOME foo bar baz bob TEXT",
"SOME foo TEXT",
"foo bar SOME TEXT baz",     
"SOME TEXT"]

我希望它按精确度排序SOME TEXT子字符串(大写无关紧要)。像这样的命令:

["SOME TEXT",
"foo bar SOME TEXT baz",
"SOME foo TEXT",
"foo bar SOME baz TEXT bob",
"SOME foo bar baz bob TEXT"]

这个想法是 - 最好的分数得到与子字符串单词位置最匹配的字符串。对于子字符串单词之间“草率”单词的数量越大,它的排序就越低。

我发现了一些像fuzzyset, or 编辑距离但我不确定这就是我需要的。正如我所理解的,我知道我想要排序的确切子字符串,并且这些库搜索相似的单词。

实际上,我需要在 Django 项目中进行一些数据库查询(Postgresql)后进行这种排序。我已经尝试过使用 ORM 进行全文搜索,但没有得到相关的排序顺序(它不计算子字符串单词之间的距离)。接下来我尝试了 Haystack+Whoosh,但此时也没有找到如何进行这种排序的信息。所以现在的想法是获取查询集,然后将其从数据库中排序(是的,我知道这可能是一个糟糕的决定,但现在我希望它能正常工作)。但是,如果有人告诉我如何在我在这里提到的任何技术中做到这一点 - 那也将非常酷。谢谢你!

附注子字符串的长度应为 2-10 个单词,最多 20 个单词的字符串。


您可以使用difflib.序列匹配器,实现与您所需的输出非常相似的结果:

>>> import difflib
>>> l = ["foo bar SOME baz TEXT bob", "SOME foo bar baz bob TEXT", "SOME foo TEXT", "foo bar SOME TEXT baz", "SOME TEXT"]
>>> sorted(l, key=lambda z: difflib.SequenceMatcher(None, z, "SOME TEXT").ratio(), reverse=True)
['SOME TEXT', 'SOME foo TEXT', 'foo bar SOME TEXT baz', 'foo bar SOME baz TEXT bob', 'SOME foo bar baz bob TEXT']

如果您无法区分唯一的区别是两个元素的位置"foo bar SOME TEXT baz" and "SOME foo TEXT"与您想要的输出相比被交换。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:如何按子串相关性对字符串列表进行排序? 的相关文章

随机推荐

  • 从 Rails 导出 CSV 数据

    我正在努力从 Rails 导出 CSV 数据 我正在按照这里的教程进行操作 http railscasts com episodes 362 exporting csv and excel view asciicast 在我的控制器中我有
  • Gradle构建错误将字节码转换为dex时出错:原因:com.android.dex.DexException:多个dex文件定义Landroid/arch/lifecycle/liveData$1

    从过去 3 天开始 我收到此错误 并已尝试了所有可能的方法 谁能帮我纠正一下 我正在使用 Android 3 0 我的 sdk 和 Google Play 服务已更新 并且我已添加multiDexEnabled true我的代码 并且还尝试
  • 如何在 swift 中使用模态视图?

    When adding an account to Mail in preferences you get a modal view like this 我的问题是 如何以编程方式复制这个 换句话说 如何在呈现视图上显示模态 UIView
  • Mybatis resulttypehashmap 的 null 值

  • 查找两个单词是否是彼此的字谜

    我正在寻找一种方法来查找两个字符串是否是彼此的字谜 Ex string1 abcde string2 abced Ans true Ex string1 abcde string2 abcfed Ans false 我想出的解决方案是对两个
  • 如果付款失败,PayPal Standard 是否会自动重试向客户收费?

    我必须将 PayPal 标准付款集成到我的 Saas 中才能按月订阅 我在 PayPal 文档中找到了一些有关使用 API 的提示 但这不是我的情况 如果几个月后由于客户没有钱而付款失败 它是否会在接下来的几天内自动重试向客户收费 还是我应
  • 如何理解读内存屏障和易失性

    有些语言提供了volatile修饰符被描述为在读取支持变量的内存之前执行 读内存屏障 读内存屏障通常被描述为一种确保 CPU 在执行屏障之后请求的读取之前已执行屏障之前请求的读取的方法 然而 使用这个定义 似乎仍然可以读取过时的值 换句话说
  • Visual Studio 在 Windows 7 上将 WINVER/_WIN32_WINNT 设置为 Windows 8?

    我正在使用 Visual Studio 2012 在 Windows 7 x64 上执行一些测试 看起来 Microsoft 的工具链正在设置 WIN32 WINNT to 0x602 WIN32 WINNT WIN8 运行我们的测试程序结
  • AdMob 填充率 = 0

    我正在使用 admob 来开发前几天刚刚推出的应用程序 一开始没有任何下载 但是通过我现在使用的广告活动 我昨天收到了 140 个请求 截至目前 已经收到 44 个请求 并且还在增加中 但在旧的 admob 网站上 它仍然显示它未激活 因为
  • 我需要查看上传的图片的正确路径是什么?

    在我的网络应用程序中 我的一个页面正在将照片上传到路径 usr local rac picture name goes here 照片上传正常 但我需要在另一个页面中访问它 当我尝试从 JSP 访问它时 它不会显示 我猜我的照片路径不正确
  • 使用具有多个参数的地图

    蟒蛇的map可以接受多个可迭代对象 当可调用对象可以接受相同数量的输入参数时使用 如果输入可迭代的长度相同 则其行为类似于传递压缩参数的列表理解 例如 gt gt gt iterables spam eggs gt gt gt map ma
  • Swift 3. NSFetchRequest 属性ToFetch

    在 Swift 3 中 当我们使用NSFetchRequest 我们必须指定NSFetchRequestResult 但如何获取属性值数组呢 如果我使用这样的东西 let fetchRequest NSFetchRequest
  • 在包含多段落单元格的 Word 表格中向下移动一行

    如何可靠地向下移动 Word 表格中的行 这是表的结构 请注意 第一列和第二列都可以有多行和段落 Rule ID 1 Logic Date must be equal to or greater than 01 Jan 2012 Discr
  • Rand 生成相同的数字

    我制作的小游戏有问题 include stdafx h include
  • 正则表达式单词边界末端和边缘之间的差异

    R 帮助文件regex says 符号 分别匹配空字符串 单词的开头和结尾 符号 b 匹配空字符串 单词的边缘 单词的 末端和边缘有什么区别 之间的区别 b and lt gt 就是它 b可以在 PCRE 正则表达式模式中使用 当您指定pe
  • 如果 libxml2 包不适用于我的版本,如何在 R 中安装它?

    我想在 R 中安装 DESeq2 包 但它缺少 xml2 config 文件 我在某处发现可以通过安装 libxml2 包来获取它 但是当我尝试时它给出错误 它不适用于 R 版本 3 4 2 有人知道该怎么做吗 您可以安装开发版本 devt
  • 确定网络连接链路速度

    如何以编程方式确定活动网络连接的网络连接链接速度 就像任务管理器在 网络 选项卡中显示的那样 我并不是真正追求可用带宽 只是当前连接的数字 例如54Mbps 100Mbps 等 Win32 NetworkAdapterWMI 类可以帮助您
  • magento 对自定义集合进行分页

    我有一个自定义页面 我在其中通过跨模型与品牌使用自定义查询来显示自定义产品 我有一系列产品 ID 现在我似乎不知道如何实现 magento 的默认分页系统 任何帮助将不胜感激 提前致谢 第1步 控制器 IndexController php
  • 你可以使用CSS来镜像/翻转文本吗?

    是否可以使用 CSS CSS3 镜像文本 具体来说 我有这个剪刀字符 9986 我想显示向左而不是向右 您可以使用 CSS 转换来实现此目的 水平翻转涉及缩放 div 如下所示 moz transform scale 1 1 webkit
  • Python:如何按子串相关性对字符串列表进行排序?

    我有一些字符串列表 例如 foo bar SOME baz TEXT bob SOME foo bar baz bob TEXT SOME foo TEXT foo bar SOME TEXT baz SOME TEXT 我希望它按精确度排