如何解析一个字符串并返回一个嵌套数组?

如何解析一个字符串并返回一个嵌套数组?,第1张

概述我想要一个Python函数,它接受一个字符串,并返回一个数组,其中数组中的每个项目都是一个字符,或者是另一个这样的数组。嵌套数组在输入字符串中以‘(‘和以‘)‘开头标记。 因此,该函数将如下所示: 1) foo("abc") == ["a", "b", "c"] 2) foo("a(b)c") == ["a", ["b"], "c"] 3) foo("a(b(c))") == ["a", ["b"

我想要一个Python函数,它接受一个字符串,并返回一个数组,其中数组中的每个项目都是一个字符,或者是另一个这样的数组。嵌套数组在输入字符串中以‘(‘和以‘)‘开头标记。

因此,该函数将如下所示:

1) foo("abc") == ["a", "b", "c"] 2) foo("a(b)c") == ["a", ["b"], "c"] 3) foo("a(b(c))") == ["a", ["b", ["c"]]] 4) foo("a(b(c)") == error: closing bracket is missing 5) foo("a(b))c") == error: opening bracket is missing 6) foo("a)b(c") == error: opening bracket is missing 

注意:我更喜欢纯粹功能性的解决方案。

 

解决方案
def foo(s): def foo_helper(level=0): try: token = next(tokens) except stopiteration: if level != 0: raise Exception(‘missing closing paren‘) else: return [] if token == ‘)‘: if level == 0: raise Exception(‘missing opening paren‘) else: return [] elif token == ‘(‘: return [foo_helper(level+1)] + foo_helper(level) else: return [token] + foo_helper(level) tokens = iter(s) return foo_helper() 

和,

>>> foo(‘a((b(c))d)(e)‘) [‘a‘, [[‘b‘, [‘c‘]], ‘d‘], [‘e‘]]
 
本文首发于Python黑洞网,博客园同步更新
总结

以上是内存溢出为你收集整理的如何解析一个字符串并返回一个嵌套数组?全部内容,希望文章能够帮你解决如何解析一个字符串并返回一个嵌套数组?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1191457.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存