如何解析一个字符串并返回一个嵌套数组?
我想要一个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同步更新
如何解析一个字符串并返回一个嵌套数组?相关推荐
- python解析json_python3 解析 json 字符串并返回支持属性访问的对象
目的 将任意一个 json 字符串,转换为 python 的 object 对象,转换后支持使用属性访问. 方法 json 解析命令行使用的 argparse,可以任意规定命令行关键字,并能使用属性访 ...
- 编写一个方法参数接收一个字符串,返回一个Date对象(在多种日期格式中找到与字符串匹配的那一个)用到解析异常ParseException
题目:编写一个方法参数接收一个字符串,返回一个Date对象(在多种日期格式中找到与字符串匹配的那一个)用到解析异常ParseException 具体代码如下: import java.text.Par ...
- java---编写一个方法,返回一个int型的二维数组,数组中的元素通过解析字符串参数获得。
题目: 编写一个方法,返回一个int型的二维数组,数组中的元素通过解析字符串参数获得,字符串如下"1,2:3,4,5:6,7"对应的数组为: d[0][0]=1 d[0][1]=2 ...
- Java黑皮书课后题第7章:**7.34(对字符串中的字符排序)使用以下方法头编写一个方法,返回一个排序好的字符串。编写一个测试程序,提示用户输入一个字符串,显示排序好的字符串
**7.34(对字符串中的字符排序)使用以下方法头编写一个方法,返回一个排序好的字符串.编写一个测试程序,提示用户输入一个字符串,显示排序好的字符串 题目 题目描述 破题 代码 运行实例 题目 题目描 ...
- 从键盘上输入一个字符串并保存在str1中,并把str1中下表为偶数的字符保存到str2中
从键盘上输入一个字符串并保存在str1中,并把str1中下表为偶数的字符保存到str2中 比如; dang str1 = "computer"时,str2 = "cmue ...
- 输入一个字符串并原样输出。
标题 输入一个字符串并原样输出. 解题方法 定义好字符串的长度并输出. 熟练使用putchar语法结构. putchar语法结构为 int putchar(int char) ,其功能是把参数 cha ...
- 统计一个字符在另一个字符串中出现的次数
文章目录 1.一个字符在另一个字符串中出现的次数 2.测试 3.输出 1.一个字符在另一个字符串中出现的次数 /*** showTime 懂得都懂 <br>* @param findStr ...
- java定义一个方法,返回一个整数数组的元素平均值
java定义一个方法,返回一个整数数组的元素平均值 /*** 定义一个方法* 返回一个整数数组的元素平均值*/ public class Test25 {public static double av ...
- java定义一个方法,返回一个整数数组的元素最小值
java定义一个方法,返回一个整数数组的元素最小值 /*** 定义一个方法* 返回一个整数数组的元素最小值*/ public class Test24 {public static int minAr ...
最新文章
- Boost:原子性的用法测试程序
- 用 Python 在朋友圈中游遍全球
- matla工具箱 SerialLink 的一些最近发现的功能
- 统计网站 同一IP访问的次数及IP地址
- 357.计算各个位数不同的数字个数
- iOS 最新AppStore申请加急审核 以及 apple联系方式大全
- Xbox one VS. ps4
- linux 图片压缩命令,Linux:优化和压缩JPEG和PNG图片的命令行工具
- 吃鸡手游竟然是 Python 写的?
- 学习Python的三种境界,你现在是在什么境界?
- 万豪国际集团全新人才品牌“Be”将于全球超8300家酒店上线 | 美通社头条
- CTF入门指南(0基础)
- 数通 | 某些基本知识梳理
- nofollow标签的作用有重大变化
- 电子科大自考c语言试题,国科大生物试卷玩诗意走红网络
- 【C++错误】VS调试出现0xC00000FD:Stack overflow溢出
- 微信小程序vantui安装及使用教程
- python爬虫 获取网页源代码
- 会议OA(待开会议所有会议)
- 别浪费自己的高学历!+研究生应当常去的网站+北邮人!应该反思!+写给每一个北邮人
热门文章
- Spark源码分析之DAGScheduler以及stage的划分
- (19)System Verilog利用clocking块产生输入信号延迟激励
- mqtt server python_使用python实现mqtt的发布和订阅
- python编辑器中文字体倒立的_如何用Python+人工识别处理知乎的倒立汉字验证码...
- 重绘CButton控件
- Linux系统调用--getrlimit/setrlimit函数详解
- varnish几个工具命令行工作情况
- va_list函数族应用
- 【AD】AD19/20笔记及快捷键
- 数据挖掘引入:基础知识