如何利用Python提取出指定字符串内所有满足指定长度的字符串片段?

教材中提及了如何截取指定位置到指定位置的字符串片段,但没有提及如何提取指定长度的片段,能否在不使用if语句的前提下完成提取。

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

在Python中,可以使用循环和字符串切片的方式提取指定字符串内所有满足指定长度的字符串片段,具体步骤如下:

1. 定义目标字符串和目标长度:

target_str = "Hello, world! This is a demo string."
target_len = 4

2. 循环遍历目标字符串,每次取出指定长度的字符串片段:

result = [target_str[i:i+target_len] for i in range(len(target_str)-target_len+1)]

其中,`range(len(target_str)-target_len+1)` 用于循环遍历目标字符串中的所有可能的起始位置,`target_str[i:i+target_len]` 用于取出指定长度的字符串片段。

3. 输出结果:

print(result)

运行结果如下:

['Hell', 'ello', 'llo,', 'lo, ', 'o, w', ', wo', ' wor', 'worl', 'orld', 'rld!', 'ld! ', 'd! T', '! Th', ' Thi', 'This', 'his ', 'is a', 's a ', ' a d', 'a de', ' dem', 'demo', 'emo ', 'mo s', 'o st', ' str', 'stri', 'trin', 'ring', 'ing.']

可以看到,程序成功提取出了所有满足指定长度的字符串片段。

需要注意的是,本方法使用了列表推导式和字符串切片,不需要使用if语句即可完成提取。但是,该方法的时间复杂度为O(n^2),在字符串较长时可能会比较耗时。如果需要提取的字符串片段数量较多,建议使用其他更高效的方法进行处理。

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢


def extract_substrings(s, length):
    res = []
    for i in range(len(s)-length+1):
        sub = s[i:i+length]
        if len(sub) == length:
            res.append(sub)
    return res

s = "hello world"
length = 3
substrings = extract_substrings(s, length)
print(substrings)


def extract_substrings(string, length):
    substrings = []
    start = 0
    for i in range(len(string)):
        if i == len(string) - 1:
            if i - start + 1 == length:
                substrings.append(string[start:i+1])
        elif i - start + 1 == length:
            substrings.append(string[start:i+1])
            start += 1
        else:
            continue
    return substrings
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7456273
  • 这篇博客也不错, 你可以看下Python中如何使用if语句处理列表实例代码
  • 除此之外, 这篇博客: Python中的if与循环语句中的 使用步骤以及多种条件结构 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 代码如下:

    money = 1000
    s = int(input('请输入取款金额'))
    if money >= s:
        money = money - s
        print('取款成功,余额为', money)
    
    num = int(input('请输入一个整数'))
    # 双分支结构
    if num % 2 == 0:
        print(num, '是偶数')
    else:
        print(num, '是奇数')
    # 多分支结构
    score = int(input('请输入成绩'))
    if 90 <= score <= 100:
        print('A')
    elif 80 <= score < 90:
        print('B')
    elif 70 <= score < 80:
        print('C')
    else:
        print('D')
    
    # if 嵌套结构
    answer = input('你是会员吗?y/n')
    if answer == 'y':
        i = int(input('您是尊贵的会员,请选择服务:\n1.充值2.充值'))
        if i == 1:
            print('您选择充值')
        else:
            print('您选择充值')
    else:
        print('不是会员禁止游玩!')
    
    # 条件表达式
    a = int(input('请输入第一个整数'))
    b = int(input('请输入第二个整数'))
    print('使用条件表达式进行比较')
    print(str(a) + '大于等于' + str(b) if a >= b else str(a) + '小于等于' + str(b))
    
    
  • 您还可以看一下 张添翔老师的Python零基础入门教程课程中的 if语句小节, 巩固相关知识点