如何解析一个字符串并返回一个嵌套数组?
程序员文章站
2022-04-15 15:27:31
我想要一个Python函数,它接受一个字符串,并返回一个数组,其中数组中的每个项目都是一个字符,或者是另一个这样的数组。嵌套数组在输入字符串中以'('和以')'开头标记。 因此,该函数将如下所示: 注意:我更喜欢纯粹功能性的解决方案。 解决方案 和, ......
我想要一个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黑洞网,博客园同步更新
上一篇: MySQL 8.0部分弃用的参数整理
下一篇: OpenCV:图像的裁剪
推荐阅读
-
php一个解析字符串排列数组的方法
-
解析array splice的移除数组中指定键的值,返回一个新的数组
-
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
-
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
-
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
-
LeetCode 1 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
-
两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。...
-
c语言和Java语言实现,两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
[每日一题]给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。