获取一个带有周围模式上下文的随机字符串位置



我正在寻找一个有效的python解决方案来解决以下问题。我有一个DNA序列,想在字符串中选择一个随机位置,满足某个三元组模式的中间位置。例如,如果DNA串是";ACTGTGACTACTGGGGG";,三元组是";ACT";,我想随机返回位置1、7、10中的一个。

您可以使用re.finditer查找子字符串匹配的所有索引,然后使用random.choice选择其中一个索引。

>>> import re
>>> import random
>>> s = 'ACTGTGACTACTGGGGG'
>>> f = 'ACT'
>>> indices = [m.start() for m in re.finditer(f, s)]
>>> random.choice(indices)
0
>>> random.choice(indices)
9

请注意,Python中的索引是基于0的,因此在您的示例中,有效的起始位置是069

最新更新