📜  Python – 提取 K 长度的子串(1)

📅  最后修改于: 2023-12-03 15:34:08.694000             🧑  作者: Mango

Python - 提取 K 长度的子串

在编写文本处理程序时,我们经常需要从给定字符串中提取长度为 K 的子串。Python中有多种方法可以完成这个任务。

方法一:使用循环遍历

我们可以使用while循环,逐个字符地比较字符串中的字符,然后提取K长度的子串,直到字符串末尾。

def extract_substring(s, k):
    # 检查字符串s和子串长度k是否有效
    if len(s) < k:
        return "Invalid Input"
      
    res = []
    i = 0
    while i <= len(s) - k:
        res.append(s[i:i+k])
        i += 1
    return res
   
# 调用函数
s = "Hello World"
k = 3
print(extract_substring(s, k))

输出:

['Hel', 'ell', 'llo', 'lo ', 'o W', ' Wo', 'Wor', 'orl', 'rld']
方法二:使用列表推导式

我们可以使用列表推导式,快速提取字符串中所有长度为 K 的子串。

def extract_substring(s, k):
    # 检查字符串s和子串长度k是否有效
    if len(s) < k:
        return "Invalid Input"
      
    return [s[i:i+k] for i in range(len(s) - k + 1)]
   
# 调用函数
s = "Hello World"
k = 3
print(extract_substring(s, k))

输出:

['Hel', 'ell', 'llo', 'lo ', 'o W', ' Wo', 'Wor', 'orl', 'rld']
方法三:使用正则表达式

我们可以使用正则表达式模块,从字符串中提取所有长度为K的子串。

import re

def extract_substring(s, k):
    # 检查字符串s和子串长度k是否有效
    if len(s) < k:
        return "Invalid Input"

    # 构建正则表达式
    regex = "(?=(" + "." * k + "))"
    return re.findall(regex, s)

# 调用函数
s = "Hello World"
k = 3
print(extract_substring(s, k))

输出:

['Hel', 'ell', 'llo', 'lo ', 'o W', ' Wo', 'Wor', 'orl', 'rld']

以上三种方法都可以提取长度为K的子串,我们可以根据具体需求选用其中的任意一种。