结构化解析,去除空行
【问题】
I have a text data like
name = abc
id = 123
Place = xyz
Details = some texts with two line
name = aaa
id = 54657
Place = dfd
Details = some texts with some lines
I need to place them in a table or csv and my output should look like
name id Place Details
abc 123 xyz Some texts with two line
aaa 54657 dfd Some texts with some lines
【回答】
源数据里不确定有多少空行,只需去掉空行并取出等号右边的数据,之后每四行分一组并按顺序写入二维表。用Java硬码太麻烦,可以用集算器按思路写出代码,并用JDBC的方式集成。SPL如下:
A |
|
1 |
=file("D:\\source.txt").import@i() |
2 |
=A1.select(~).(~.split@t("=")(2)) |
3 |
=A2.group((#-1)\4) |
4 |
=A3.new(~(1):name,~(2):id,~(3):place,~(4):details) |
A1:读取文本文件的内容,将每一行作为一个成员返回成序列。
A2:将A1中的每个成员,通过分隔符"="拆成序列,再做一下两边trim去除空白符。最后返回第二个成员,即等号右边的数据。
A3:分组,每四行分一组。
A4:根据A3,创建一个由name,id,place,details组成的新序表,用于保存最终的计算结果。
A4的计算结果还可以直接写入文本文件:A5=file("D:\\result.txt").export@t(A4)
或将A4的计算结果插入数据库:A6=myDB1.update@i(A4, tableName,name:name,id:id,place:place,details:details;id)