如何使用递归提取子字符串列表?
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']
【讨论】:
以上是关于如何使用递归提取子字符串列表?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PostgreSql 中的子字符串函数从字符串中提取单词