Discussion:
Help in using grako for parsing
varun7rs
2014-10-17 08:33:53 UTC
Permalink
Hello,
I am trying to parse a file which ahs the below content. I tried using the split function but that wasn't a good programming practice. I had to use it repeatedly to split the line and then read my data. I thought of doing it in a better way which is when I came across grako. But I have no idea whatsoever about the usage of grako in a script. It would be nice if any of you could help me understand the usage of grako. I need to extract the values beside the variables z, f and x. The numbers represent the request ID, virtualNode ID and physical nodeID for x and it varies a bit for f,

Thanks a lot

z_0 1.000000
x_0_0_1 1.000000
x_0_1_5 1.000000
x_0_2_20 1.000000
x_0_3_21 1.000000
x_0_4_8 1.000000
f_0_0(0,1)_(1,5) 1.000000
f_0_1(1,2)_(5,9) 1.000000
f_0_1(1,2)_(9,20) 1.000000
f_0_2(2,3)_(2,21) 1.000000
f_0_2(3,2)_(2,22) 1.000000
f_0_2(2,3)_(20,22) 1.000000
f_0_3(4,3)_(8,10) 1.000000
f_0_3(3,4)_(0,10) 1.000000
f_0_3(4,3)_(0,14) 1.000000
f_0_3(4,3)_(14,21) 1.000000
z_1 1.000000
x_1_0_16 1.000000
x_1_1_6 1.000000
x_1_2_13 1.000000
x_1_3_0 1.000000
x_1_4_25 1.000000
x_1_5_15 1.000000
x_1_6_19 1.000000
f_1_0(1,0)_(6,16) 1.000000
f_1_1(0,2)_(6,11) 1.000000
f_1_1(0,2)_(11,13) 1.000000
f_1_1(2,0)_(6,16) 1.000000
f_1_2(3,1)_(0,6) 1.000000
f_1_3(2,4)_(13,25) 1.000000
f_1_4(5,4)_(15,25) 1.000000
f_1_5(3,6)_(0,1) 1.000000
f_1_5(3,6)_(1,18) 1.000000
f_1_5(3,6)_(18,19) 1.000000
Peter Otten
2014-10-17 08:57:38 UTC
Permalink
Post by varun7rs
Hello,
I am trying to parse a file which ahs the below content. I tried using the
split function but that wasn't a good programming practice. I had to use
it repeatedly to split the line and then read my data. I thought of doing
it in a better way which is when I came across grako. But I have no idea
whatsoever about the usage of grako in a script. It would be nice if any
of you could help me understand the usage of grako. I need to extract the
values beside the variables z, f and x. The numbers represent the request
ID, virtualNode ID and physical nodeID for x and it varies a bit for f,
We know Python, but not necessarily any terminology you throw at us.

I didn't respond to your previous post because I had no idea what a .sol
file is and what you're up to. As far as I can see no-one did. Now you make
it even harder to help you by forcing us to look up "grako" to not (sic!)
understand your question...

You give sample input below. Perhaps you'll get more/better feedback if you
provide a sample of the output you need, too, together with a more elaborate
and accessible explanation of how you think you could get there.
Post by varun7rs
z_0 1.000000
x_0_0_1 1.000000
x_0_1_5 1.000000
x_0_2_20 1.000000
x_0_3_21 1.000000
x_0_4_8 1.000000
f_0_0(0,1)_(1,5) 1.000000
f_0_1(1,2)_(5,9) 1.000000
f_0_1(1,2)_(9,20) 1.000000
f_0_2(2,3)_(2,21) 1.000000
f_0_2(3,2)_(2,22) 1.000000
f_0_2(2,3)_(20,22) 1.000000
f_0_3(4,3)_(8,10) 1.000000
f_0_3(3,4)_(0,10) 1.000000
f_0_3(4,3)_(0,14) 1.000000
f_0_3(4,3)_(14,21) 1.000000
z_1 1.000000
x_1_0_16 1.000000
x_1_1_6 1.000000
x_1_2_13 1.000000
x_1_3_0 1.000000
x_1_4_25 1.000000
x_1_5_15 1.000000
x_1_6_19 1.000000
f_1_0(1,0)_(6,16) 1.000000
f_1_1(0,2)_(6,11) 1.000000
f_1_1(0,2)_(11,13) 1.000000
f_1_1(2,0)_(6,16) 1.000000
f_1_2(3,1)_(0,6) 1.000000
f_1_3(2,4)_(13,25) 1.000000
f_1_4(5,4)_(15,25) 1.000000
f_1_5(3,6)_(0,1) 1.000000
f_1_5(3,6)_(1,18) 1.000000
f_1_5(3,6)_(18,19) 1.000000
varun7rs
2014-10-17 09:17:01 UTC
Permalink
I'm really sorry for not being clear. I shall explain things in detail from now onwards. Really sorry. The output I would like is

<RF schema="RF.xsd" version="">
<VNE>
<requests>
<request ID="'0'">
<virtualnodes>
<virtualnode PhysicalNode_ID="'1'" Request_ID="'0'" VirtualNode_ID="'0'"/><virtualnode PhysicalNode_ID="'5'" Request_ID="'0'" VirtualNode_ID="'1'"/><virtualnode PhysicalNode_ID="'20'" Request_ID="'0'" VirtualNode_ID="'2'"/><virtualnode PhysicalNode_ID="'21'" Request_ID="'0'" VirtualNode_ID="'3'"/><virtualnode PhysicalNode_ID="'8'" Request_ID="'0'" VirtualNode_ID="'4'"/></virtualnodes>
<virtualedges>
<virtualedge PhysicalEdgeHead_ID="'5'" PhysicalEdgeTail_ID="'1'" Request_ID="'0'" VirtualEdgeHead_ID="'1'" VirtualEdgeTail_ID="'0'"/><virtualedge PhysicalEdgeHead_ID="'9'" PhysicalEdgeTail_ID="'5'" Request_ID="'0'" VirtualEdgeHead_ID="'2'" VirtualEdgeTail_ID="'1'"/><virtualedge PhysicalEdgeHead_ID="'20'" PhysicalEdgeTail_ID="'9'" Request_ID="'0'" VirtualEdgeHead_ID="'2'" VirtualEdgeTail_ID="'1'"/><virtualedge PhysicalEdgeHead_ID="'21'" PhysicalEdgeTail_ID="'2'" Request_ID="'0'" VirtualEdgeHead_ID="'3'" VirtualEdgeTail_ID="'2'"/><virtualedge PhysicalEdgeHead_ID="'22'" PhysicalEdgeTail_ID="'2'" Request_ID="'0'" VirtualEdgeHead_ID="'2'" VirtualEdgeTail_ID="'3'"/><virtualedge PhysicalEdgeHead_ID="'22'" PhysicalEdgeTail_ID="'20'" Request_ID="'0'" VirtualEdgeHead_ID="'3'" VirtualEdgeTail_ID="'2'"/><virtualedge PhysicalEdgeHead_ID="'10'" PhysicalEdgeTail_ID="'8'" Request_ID="'0'" VirtualEdgeHead_ID="'3'" VirtualEdgeTail_ID="'4'"/><virtualedge PhysicalEdgeHead_ID="'10'" PhysicalEdgeTail_ID="'0'" Request_ID="'0'" VirtualEdgeHead_ID="'4'" VirtualEdgeTail_ID="'3'"/><virtualedge PhysicalEdgeHead_ID="'14'" PhysicalEdgeTail_ID="'0'" Request_ID="'0'" VirtualEdgeHead_ID="'3'" VirtualEdgeTail_ID="'4'"/><virtualedge PhysicalEdgeHead_ID="'21'" PhysicalEdgeTail_ID="'14'" Request_ID="'0'" VirtualEdgeHead_ID="'3'" VirtualEdgeTail_ID="'4'"/></virtualedges>

In a similar way I have something like this for every request. This is what I intend to get from the input that I had pasted earlier.
varun7rs
2014-10-17 09:18:58 UTC
Permalink
Oh damn, it turned out really crappy. I could not format it properly
Loading...