python - 在Python中,如何提取较长字符串中跨越某个索引的所有子字符串?

标签 python split sliding-window

假设我有一个字符串(mystring)。我想提取 mystring 的所有可能的子字符串,只要子字符串的长度为 8-15。我已经能够毫无问题地做到这一点(参见下面的代码)。但是,如果我只想提取这些与 mystring 的特定部分重叠的子字符串,该怎么办?重叠是由 mystring 中的位置而不是 mystring 中的某个字母定义的,因为这些字母在 mystring 中不是唯一的。

在下面的示例中,我可能希望我的子字符串包含从零开始的索引 11。

mystring = "JACKANDJILLRANUPTHEHILLFORWATER"

substrings = set()
for i in range(0, len(mystring)):
     for length in range(8,16):
         ss = mystring[i:i+length]
         if len(ss) == length:
             substrings.add(ss)

最佳答案

简单答案

你可以检查 11包含在[i, i + length)中通过检查i <= 11 < i + length :

mystring = "JACKANDJILLRANUPTHEHILLFORWATER"

substrings = set()
for i in range(0, len(mystring)):
     for length in range(8,16):
         ss = mystring[i:i+length]
         if len(ss) == length and i <= 11 < i + length:
             substrings.add(ss)

设定理解

你可以这样做:

substrings = {mystring[i:j] 
              for i in range(0, len(mystring))
              for j in range(i + 8, min(i + 16, len(mystring)))
              if i <= 11 < j}

关于python - 在Python中,如何提取较长字符串中跨越某个索引的所有子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45695852/

相关文章:

python - 灵活的滑动窗口(Python)

opencv - 滑动窗口算法是否有任何非天真的方法?

Python 方法采用一个位置参数,但给出了两个

python - 如何使用带有公钥文件的 Paramiko 访问远程服务器

java - 如何拆分逗号分隔的字符串?

regex - 如何处理 Perl 正则表达式中的每个 ASCII 字符(包括正则表达式特殊字符)?

scala - 理解mllib滑动

python - 不规则嵌套 np.where 子句的替代方案

python - 获取 BeautifulSoup 中父项的第一个文本实例

java - 字符串实用程序拆分 - Linux