📅  最后修改于: 2023-12-03 15:34:08.694000             🧑  作者: Mango
在编写文本处理程序时,我们经常需要从给定字符串中提取长度为 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的子串,我们可以根据具体需求选用其中的任意一种。