I have a text file (~20MB) from which I want to extract some information. The info I am interested in looks like this:
Generate :
MESH : Cartesian
1.00000 0.00000 0.00000
0.00000 0.84680 0.00000
0.00000 0.00000 0.80724
MESH : 4 unique points
x y z Weight
1 0.000000 0.000000 0.000000 0.3906
2 0.125000 0.000000 0.000000 0.7812
3 0.250000 0.000000 0.000000 0.7812
4 0.375000 0.000000 0.000000 0.7812
I want to save the x,y,z columns to an array after the second occurrence of the string 'MESH'. I tried using regex, but my solution saves the result as a list and makes it too complicated to call these values for future purposes. Here is my attempt:
import re
line_number = 0
mesh_list = []
Qp = []
with open('out.test','r') as f:
for line in f:
line_number +=1
if 'MESH' in line:
mesh_list.append([(line_number),line.rstrip()])
point_info = mesh_list[1]
output_line = point_info[0] ## Line number where MESH appears the second time.
point_list = point_info[1].split()
num_of_points = int(point_list[1]) ## Get number of unique points.
with open('out.test','r') as f:
for i, line in enumerate(f):
if output_line+1 <= i <= output_line+num_of_points:
Qp.append([line])
print(Qp)
At this point, 'Qp' has all the lines I need, but how can I separate x,y,z columns from this chunk? Would it be easier with pandas?