我想要一个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黑洞网,csdn同步更新

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

  1. python解析json_python3 解析 json 字符串并返回支持属性访问的对象

    目的 将任意一个 json 字符串,转换为 python 的 object 对象,转换后支持使用属性访问. 方法 json 解析命令行使用的 argparse,可以任意规定命令行关键字,并能使用属性访 ...

  2. 编写一个方法参数接收一个字符串,返回一个Date对象(在多种日期格式中找到与字符串匹配的那一个)用到解析异常ParseException

    题目:编写一个方法参数接收一个字符串,返回一个Date对象(在多种日期格式中找到与字符串匹配的那一个)用到解析异常ParseException 具体代码如下: import java.text.Par ...

  3. java---编写一个方法,返回一个int型的二维数组,数组中的元素通过解析字符串参数获得。

    题目: 编写一个方法,返回一个int型的二维数组,数组中的元素通过解析字符串参数获得,字符串如下"1,2:3,4,5:6,7"对应的数组为: d[0][0]=1 d[0][1]=2 ...

  4. Java黑皮书课后题第7章:**7.34(对字符串中的字符排序)使用以下方法头编写一个方法,返回一个排序好的字符串。编写一个测试程序,提示用户输入一个字符串,显示排序好的字符串

    **7.34(对字符串中的字符排序)使用以下方法头编写一个方法,返回一个排序好的字符串.编写一个测试程序,提示用户输入一个字符串,显示排序好的字符串 题目 题目描述 破题 代码 运行实例 题目 题目描 ...

  5. 从键盘上输入一个字符串并保存在str1中,并把str1中下表为偶数的字符保存到str2中

    从键盘上输入一个字符串并保存在str1中,并把str1中下表为偶数的字符保存到str2中 比如; dang str1 = "computer"时,str2 = "cmue ...

  6. 输入一个字符串并原样输出。

    标题 输入一个字符串并原样输出. 解题方法 定义好字符串的长度并输出. 熟练使用putchar语法结构. putchar语法结构为 int putchar(int char) ,其功能是把参数 cha ...

  7. 统计一个字符在另一个字符串中出现的次数

    文章目录 1.一个字符在另一个字符串中出现的次数 2.测试 3.输出 1.一个字符在另一个字符串中出现的次数 /*** showTime 懂得都懂 <br>* @param findStr ...

  8. java定义一个方法,返回一个整数数组的元素平均值

    java定义一个方法,返回一个整数数组的元素平均值 /*** 定义一个方法* 返回一个整数数组的元素平均值*/ public class Test25 {public static double av ...

  9. java定义一个方法,返回一个整数数组的元素最小值

    java定义一个方法,返回一个整数数组的元素最小值 /*** 定义一个方法* 返回一个整数数组的元素最小值*/ public class Test24 {public static int minAr ...

最新文章

  1. Boost:原子性的用法测试程序
  2. 用 Python 在朋友圈中游遍全球
  3. matla工具箱 SerialLink 的一些最近发现的功能
  4. 统计网站 同一IP访问的次数及IP地址
  5. 357.计算各个位数不同的数字个数
  6. iOS 最新AppStore申请加急审核 以及 apple联系方式大全
  7. Xbox one VS. ps4
  8. linux 图片压缩命令,Linux:优化和压缩JPEG和PNG图片的命令行工具
  9. 吃鸡手游竟然是 Python 写的?
  10. 学习Python的三种境界,你现在是在什么境界?
  11. 万豪国际集团全新人才品牌“Be”将于全球超8300家酒店上线 | 美通社头条
  12. CTF入门指南(0基础)
  13. 数通 | 某些基本知识梳理
  14. nofollow标签的作用有重大变化
  15. 电子科大自考c语言试题,国科大生物试卷玩诗意走红网络
  16. 【C++错误】VS调试出现0xC00000FD:Stack overflow溢出
  17. 微信小程序vantui安装及使用教程
  18. python爬虫 获取网页源代码
  19. 会议OA(待开会议所有会议)
  20. 别浪费自己的高学历!+研究生应当常去的网站+北邮人!应该反思!+写给每一个北邮人

热门文章

  1. Spark源码分析之DAGScheduler以及stage的划分
  2. (19)System Verilog利用clocking块产生输入信号延迟激励
  3. mqtt server python_使用python实现mqtt的发布和订阅
  4. python编辑器中文字体倒立的_如何用Python+人工识别处理知乎的倒立汉字验证码...
  5. 重绘CButton控件
  6. Linux系统调用--getrlimit/setrlimit函数详解
  7. varnish几个工具命令行工作情况
  8. va_list函数族应用
  9. 【AD】AD19/20笔记及快捷键
  10. 数据挖掘引入:基础知识