gpt4 book ai didi

python - 如果字符串由单词列表中的单词组成,则匹配没有空格的字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:16:47 26 4
gpt4 key购买 nike

我有一个存储在列表中的单词列表:

[
'investment',
'property',
'something',
'else',
'vest'
]

我还有一个字符串列表,像这样

[
'investmentproperty',
'investmentsomethingproperty',
'investmentsomethingelseproperty',
'abcinvestmentproperty',
'investmentabcproperty'
]

给定这个单词列表和字符串列表,我需要确定哪些字符串包含单词列表中个单词,并且这些单词的数量最多。

在上面的示例中,如果单词的最大数量为 3,则只有字符串列表中的前两项会匹配(即使单词“vest”在“investment”中也是如此。

此示例简化了单词列表和字符串列表 - 实际上有数千个单词和数十万个字符串。所以这需要是高性能的。所有的字符串都不包含空格。

我试过像这样构造一个正则表达式:

^(?:(word1)|(word2)|(word3)){1,3}$

但是对于单词列表中的单词数量(当前为 10,000)来说,这是非常慢的。

谢谢

最佳答案

您预计需要多少时间?我测试了以下代码:

_list = ['investmentproperty'] * 100000
_dict = [
'investment',
'property',
'something',
'else'
] * 1000
regex = re.compile("^(?:" + "|".join(_dict) + "){1,3}$")

for i in _list:
result = regex.match(i)
#cost 5.06s

for i in _list:
result = re.match("^(?:" + "|".join(_dict) + "){1,3}$", i)
#cost 11.04s

我认为使用 100000 长度的列表和 4000 长度的字典,性能不错,对吧?

关于python - 如果字符串由单词列表中的单词组成,则匹配没有空格的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44126826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com