我正在编写一个程序,它将接收四种结构之一的输入行:
a,b
(a,b,c),d
a,(b,c,d)
(a,b),(c,d)
每个括号内的成员数量可能会发生变化。现在,我想将上面的每一行翻译如下
['a','b']
[['a','b','c'],'d']
['a',['b','c','d']]
[['a','b'],['c','d']]
我可以想出一种通过检查每个字符来做到这一点的方法,但是了解 python,我确信有一种方法可以轻松地做到这一点,可能是使用正则表达式。有吗?
编辑:编辑所需的输出。
请您参考如下方法:
考虑:
import re, ast
input = """
a,b
(a,b,c),d
a,(b,c,d)
(a,b),(c,d)
"""
input = re.sub(r'(\w+)', r"'\1'", input)
for line in input.strip().splitlines():
print ast.literal_eval(line)
> ('a', 'b')
> (('a', 'b', 'c'), 'd')
> ('a', ('b', 'c', 'd'))
> (('a', 'b'), ('c', 'd'))
这会创建元组,而不是列表,但这很容易解决。
