python3 str查找所有子串位置

def find_all(all_str, sub_str):
    '''查找所有子串位置'''
    index_list = []
    index = s.find(sub_str)
    sub_len = len(sub_str)
    while index != -1:
        index_list.append(index)
        index = all_str.find(sub_str, index + sub_len)

    if len(index_list) > 0:
        return index_list
    else:
        return -1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用字符串的find()方法和循环来实现: ```python m_str = 'hello world' f_str = 'l' start = 0 while True: index = m_str.find(f_str, start) if index == -1: break print(m_str[index:index+len(f_str)]) start = index + len(f_str) ``` 输出结果为: ``` l l l ``` ### 回答2: 在Python中,可以使用内置的字符串函数以及正则表达式来判断一个字符串是否包含另一个字符串,并找到所有的子串。 如果你想要判断字符串m_str是否包含字符串f_str,你可以使用以下的代码来实现: ``` def find_substrings(m_str, f_str): # 查找所有子串 substrings = [] for i in range(len(m_str)): for j in range(i+1, len(m_str)+1): substring = m_str[i:j] substrings.append(substring) if f_str in substring: print(substring) # 输出所有子串 print("所有子串: ", substrings) # 调用函数 m_str = "abcdefg" f_str = "cde" find_substrings(m_str, f_str) ``` 在上述代码中,我们定义了一个名为find_substrings的函数,该函数接受两个参数m_str和f_str,分别表示主字符串和要查找的字符串。 函数内部使用两个嵌套的循环,遍历m_str的所有可能的子串。每次循环得到一个子串substring,并将其添加到substrings列表中。 在每次循环中,我们使用了in关键字判断f_str是否在当前的子串substring中。如果满足条件,即找到了一个包含f_str子串,我们通过print函数输出找到的子串。 之后,在函数的最后,我们通过print函数输出所有的子串。 在上述代码中,我们使用了两个循环来遍历所有的子串。所以,如果m_str的长度为n,那么时间复杂度为O(n^2)。如果你的字符串较大或者需要进行频繁的子串查找操作,可能会存在性能问题。这时,你可以考虑使用相关的字符串匹配算法(如KMP算法)来提高性能。 ### 回答3: 在Python中,我们可以使用`in`关键字来查找一个字符串中是否包含另一个字符串。具体步骤如下: 1. 定义一个函数`find_substrings(m_str, f_str)`,接受两个字符串作为参数。 2. 初始化一个空列表`substrings`,用于存储找到的所有子串。 3. 使用`in`关键字判断`f_str`是否在`m_str`中。 4. 如果包含,使用`find()`方法找到`f_str`在`m_str`中的索引。 5. 使用一个循环,不断找到下一个包含`f_str`的位置,直到找不到为止。 6. 将每个找到的子串添加到`substrings`列表中。 7. 返回`substrings`列表。 下面是具体的代码实现: ```python def find_substrings(m_str, f_str): substrings = [] if f_str in m_str: index = m_str.find(f_str) while index != -1: substrings.append(m_str[index:index + len(f_str)]) index = m_str.find(f_str, index + len(f_str)) return substrings ``` 例如,如果我们调用`find_substrings("abcdefgabcdefg", "efg")`,将会返回`["efg", "efg"]`,因为字符串中包含两个"efg"子串。 这样,我们就可以通过调用`find_substrings()`函数来查找给定字符串中是否包含目标子串,并得到所有找到的子串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值