首页 > 解决方案 > 如何将多行解析为元组

问题描述

我有格式的文件:

name : base : add : data1 : data2 : {desc}
name : base : add : data1 : data2 : {desc}
name : base : add : data1:  data2 : {desc
desc-continue}
name : base : add : data1:  data2 : {desc
desc-contiue
desc-continue}
...
name : base : add : data1 : data2 : {desc}

如您所见, desc 以 {} 开头和结尾,但可以跨多行。

因此,我不能使用 reg = Register._match(line.split(r/ : /)

有关如何在 python 中有效解析此文件的任何帮助。

标签: python

解决方案


拆分}然后追加。

a = """name : base : add : data1 : data2 : {desc}
name : base : add : data1 : data2 : {desc}
name : base : add : data1:  data2 : {desc
desc-continue}
name : base : add : data1:  data2 : {desc
desc-contiue
desc-continue}"""
splited = [i+"}" for i in a.split("}") if i]

结果:

>>>splited
['name : base : add : data1 : data2 : {desc}', '\nname : base : add : data1 : data2 : {desc}', '\nname : base : add : data1:  data2 : {desc\ndesc-continue}', '\nname : base : add : data1:  data2 : {desc\ndesc-contiue\ndesc-continue}']


推荐阅读