如何使用递归提取子字符串列表?

Posted

技术标签:

【中文标题】如何使用递归提取子字符串列表?【英文标题】:How to extract a list of substrings using recursion? 【发布时间】:2020-11-25 00:27:41 【问题描述】:

给定一个字符串说, strr = "int a; int b; int c;" 如何从此字符串中提取包含 ['int a', 'int b', 'int c'] 等元素的列表。 我想用递归来实现这个输出,根本不需要 RegEx。请指导。

【问题讨论】:

但是为什么要递归呢? 你可以用strr.split(';')? 【参考方案1】:

虽然有更简单的方法,但使用递归的解决方案如下。

def extract(s):
    ' finds substrings delimited by ; '
    try:
        index = s.index(';')
        # current word + recursion for remainder
        # index + 1 in recursion to skip over ';'
        return [s[:index]] + extract(s[index+1:])
    except:
        # delimiter wasn't found (base case)
        return []

用法

strr = "int a; int b; int c;"
print(list(extract(strr)))           # Need list to get all element of generator
# Output: ['int a', ' int b', ' int c']

【讨论】:

【参考方案2】:

您可以使用内置的 split 和 'strip` 函数:

l = strr.split(';')
l = [x.strip() for x in l]
l.remove('')

输出:

['int a', 'int b', 'int c']

【讨论】:

以上是关于如何使用递归提取子字符串列表?的主要内容,如果未能解决你的问题,请参考以下文章

求一个字符串所有的子序列:非递归和递归算法

如何在批处理文件的for循环中提取子字符串[关闭]

如何使用 sed 提取子字符串

如何使用 PostgreSql 中的子字符串函数从字符串中提取单词

使用Python中的re.search(pattern,text)在两个指定的子字符串之间提取子字符串

如何在Bash中提取多个唯一子字符串