gpt4 book ai didi

Python:重新查找最长序列

转载 作者:行者123 更新时间:2023-11-28 19:52:01 25 4
gpt4 key购买 nike

我有一个随机生成的字符串:

polymer_str = "diol diNCO diamine diNCO diamine diNCO diamine diNCO diol diNCO diamine"

我想找到最长的“diNCO 二醇”序列和最长的“diNCO 二胺”序列。所以在上面的例子中,最长的“diNCO 二醇”序列是 1,最长的“diNCO 二胺”是 3。

我将如何使用 python 的 re 模块来执行此操作?

提前致谢。

编辑:
我的意思是给定字符串的最长重复次数。所以带有“diNCO diamine”的最长字符串是 3:
diol diNCO diamine diNCO diamine diNCO diamine diNCO diol diNCO diamine

最佳答案

扩展 Ealdwulfanswer :

可以找到有关re.findall 的文档here .

def getLongestSequenceSize(search_str, polymer_str):
matches = re.findall(r'(?:\b%s\b\s?)+' % search_str, polymer_str)
longest_match = max(matches)
return longest_match.count(search_str)

这可以写成一行,但在那种形式下它变得不那么可读了。

替代方案:

如果 polymer_str 很大,使用 re.finditer 会更节省内存。以下是您可能会采用的方法:

def getLongestSequenceSize(search_str, polymer_str):
longest_match = ''
for match in re.finditer(r'(?:\b%s\b\s?)+' % search_str, polymer_str):
if len(match.group(0)) > len(longest_match):
longest_match = match.group(0)
return longest_match.count(search_str)

findallfinditer 最大的区别在于前者返回一个列表对象,而后者遍历 Match 对象。此外,finditer 方法会稍微慢一些。

关于Python:重新查找最长序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1155376/

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