【发布时间】:2012-12-05 10:39:11
【问题描述】:
我的数据形式是类别和值在同一行中,由“;”分隔如下:
{{category1;value}, {category2;value}, {category3;value} ....}}
每一行的数据可能有不同数量的类别。因此,第一行可能有 category1 到 category5,而第二行可能有 category1 到 category10。不过,类别总是按顺序排列的。
我需要解析数据并创建一个新文件,以便在列标题中包含类别的名称和在相应行中的值。
category1 category2 category3 category4 ....
value value value value
但是由于我不能说可能有多少类别,所以我需要添加每个新列。因此,解析第一行我会知道有 5 列(cat1 到 cat5),但是对于第二行,我必须将 cat6 的列添加到 cat10 等等。
任何想法如何做到这一点。任何 Linux bash 脚本都可以,但我更喜欢 python。
【问题讨论】:
-
类别或值是否可以包含大括号?
-
@unutbu 这些值可以有任何字符。但是类别周围有大括号;值对也如图所示。
-
如果
value可以包含任何字符,应该使用什么规则来确定{{category1;value}, {category2;value}}没有被解析为具有一个类别category1,其值为value}, {category2;value? -
这是另一个棘手的问题。我正在查看它,以便可以通过查看开头 { 然后查找 } 来找到任何对,以结束该对。让我们假设值中没有任何以}结尾的字符。
-
那么
{{category1;val},{ue}}应该是语法错误,还是应该将其解析为具有category1值val},{ue的类别?如果是后者,那我觉得问题就比较难了。
标签: python bash text-parsing