查找列表中的任何单词是否为较长单词的子字符串的更快方法

2024-06-25 23:10:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我所拥有的

  • 长度为m(其中m>;3)的字符串s
  • 庞大的L列表words(长度>2)

我想知道的是

  • {}中的任何{}是{}的子串吗

目前我已经把L分成了几个文件,每个文件的字长16.txt15.txt04.txt
然后我从n.txt-->;迭代这些文件;04.txt基本上

cat n.txt | while read w; do if [[ $s =~ $w ]] ; then echo $w; fi; done

速度慢得让人痛苦必须有更好的方法来做到这一点

其他信息:

  • L包含大约200000个单词,并且是相当静态的,所以如果它意味着更高的速度,我不介意复杂的耗时设置
  • 有几个不同的这样的列表L,但一次只需要搜索其中一个

我非常不懂语言(se标记),但伪代码也不错


Tags: 文件字符串gttxt列表readifdo
1条回答
网友
1楼 · 发布于 2024-06-25 23:10:48

您可以在不拆分列表的情况下使用grep

grep -oFf list.txt <<< "$s"
  • -o将只输出匹配的子字符串
  • -F将把list.txt中的行解释为固定字符串,而不是正则表达式
  • -f将告诉grep使用哪个文件作为要匹配的模式的源
  • ^bash中的{}接受以下单词并将其输入到前面的命令中

相关问题 更多 >