我有这个字符串:

sample_string = 'a,b|a,c;d,e|f,g|a,c;d,e;a,b;f,g'

我可以把它拆分到这一点:

[['a,b'], ['a,c', 'd,e'], ['f,g'], ['a,c', 'd,e', 'a,b', 'f,g']]

使用以下代码:

lista = [[i for i in re.split("[;]| \W]+", s)] for s in re.split("[|]|,\W]+", sample_string)]

但我的输出需要以以下方式进行:

[['a,b'], [['a,c'], ['d,e']], ['f,g'], [['a,c'], ['d,e'], ['a,b'], ['f,g']]]

我看到的模式可以是[c,c]或[[c,c],[c,c]] 有没有办法使它成为递归函数,但仍然使用正则表达式?或者甚至是使用regex的一种更简单的方法?

推荐答案

递归地:

def parse(S,d="|;"):
    return [parse(s,d[1:]) for s in S.split(d[0])] if d and d[0] in S else [S]

输出:

sample_string = 'a,b|a,c;d,e|f,g|a,c;d,e;a,b;f,g'

print(parse(sample_string))
[['a,b'], [['a,c'], ['d,e']], ['f,g'], [['a,c'], ['d,e'], ['a,b'], ['f,g']]]

Python相关问答推荐

Pandas数据帧处理Pandas表中Json内的嵌套列表以获取后续Numpy数组

如何将Matplotlib的fig.add_axes本地坐标与我的坐标关联起来?

强制venv在bin而不是收件箱文件夹中创建虚拟环境

在for循环中仅执行一次此操作

类型错误:输入类型不支持ufuncisnan-在执行Mann-Whitney U测试时[SOLVED]

如何记录脚本输出

处理带有间隙(空)的duckDB上的重复副本并有效填充它们

无法使用requests或Selenium抓取一个href链接

如何请求使用Python将文件下载到带有登录名的门户网站?

运输问题分支定界法&

如何将多进程池声明为变量并将其导入到另一个Python文件

Python—从np.array中 Select 复杂的列子集

如何在Python中找到线性依赖mod 2

让函数调用方程

如何禁用FastAPI应用程序的Swagger UI autodoc中的application/json?

通过ManyToMany字段与Through在Django Admin中过滤

如何在Python中使用另一个数据框更改列值(列表)

Geopandas未返回正确的缓冲区(单位:米)

以逻辑方式获取自己的pyproject.toml依赖项

Beautifulsoup:遍历一个列表,从a到z,并解析数据,以便将其存储在pdf中.