当前位置: 首页 > 面试题库 >

如何使用Python查找字符串中的重叠序列数?

王佐
2023-03-14
问题内容

我的序列很长,我想知道这个序列中某些子序列出现的频率。

我知道string.count(s,sub),但它只计算非重叠序列。

是否存在类似功能(也可以计算重叠序列)?


问题答案:

作为编写自己的搜索功能的替代方法,可以使用以下re模块:

In [22]: import re

In [23]: haystack = 'abababa baba alibababa'

In [24]: needle = 'baba'

In [25]: matches = re.finditer(r'(?=(%s))' % re.escape(needle), haystack)

In [26]: print [m.start(1) for m in matches]
[1, 3, 8, 16, 18]

上面打印了所有(可能重叠的)匹配的起始位置。

如果您只需要计数,就可以使用以下方法:

In [27]: len(re.findall(r'(?=(%s))' % re.escape(needle), haystack))
Out[27]: 5


 类似资料:
  • 我需要找到字符串中最长的序列,并警告序列必须重复三次或更多次。例如,如果我的字符串是: fdwaw4helloworld vcdv1c3xcv3xcz1sda21f2sd1ahelloworld gafgfa4564534321fadghelloworld 然后我希望返回值“helloworld”。 我知道有几种方法可以做到这一点,但我面临的问题是,实际的字符串太大了,所以我真的在寻找一种能够及时

  • 问题内容: 我有一个字符串数组,其中包含字符串列表。我想弄清楚此列表中是否有重复的条目。基本上,我有一个用户列表,应该没有重复的条目。 问题答案: 您可以将String数组添加到HashSet 这将为您提供唯一的String值。如有必要,将HashSet转换回数组

  • 问题内容: 我有一个字符串序列-最多200万。它们不连续。意思是有差距。在0000003之后说下一个字符串可能是0000006。我需要找出所有这些间隙。在上述情况下(0000004、0000005)。 到目前为止,这是我所做的- 但是正如您可能已经猜到的那样,自从我使用以来,这很慢。如果我使用来预填充curr_ids,它将更快。但是填充哈希表的复杂性是什么?最快的方法是什么。 问题答案: 您可以对

  • 我在一个文本文件中有一个长字符串(DNA序列,超过20000个字符),我试图找到其中最长的序列,它至少重复了三次。实现这一目标的最佳方式是什么? 我能找到的唯一现有主题是在两个或多个单独的字符串中查找重复,但是如何使用一个长字符串?

  • 问题内容: 我似乎无法找到的代码等效,像功能,这在任何地方为Python: 基本上,我想检查一个字符串是否包含列表中的子字符串。 问题答案: 试试这个测试: 如果中包含任何子字符串,它将返回。 请注意,链接的问题中有的答案的Python类似物: 在Python 3中,您可以直接使用: 虽然上面使用生成器表达式的版本可能更清楚。

  • 问题内容: 背景: 示例列表: 我想检索一个子串是否匹配的元素,例如 码: 如果列表中的任何元素包含模式,则上面的命令会打印出来。 我想打印与子字符串匹配的元素。因此,如果我要检查,我只想从列表中打印。 问题答案: print [s for s in list if sub in s] 如果要用换行符分隔它们: 完整示例,不区分大小写: