Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I have a file with some metadata, and then some actual data consisting of 2 columns with headings. Do I need to separate the two types of data before using genfromtxt in numpy? Or can I somehow split the data maybe? What about placing the file pointer to the end of the line just above the headers, and then trying genfromtxt from there? Thanks The format of the file is shown below:

 &SRS
<MetaDataAtStart>
multiple=True
Wavelength (Angstrom)=0.97587
mode=assessment
background=True
issid=py11n2g
noisy=True
</MetaDataAtStart>
&END
Two Theta(deg)  Counts(sec^-1)
10.0    41.0
10.1    39.0
10.2    38.0
10.3    38.0
10.4    41.0
10.5    42.0
10.6    38.0
10.7    44.0
10.8    42.0
10.9    39.0
11.0    37.0
11.1    37.0
11.2    45.0
11.3    36.0
11.4    37.0
11.5    37.0
11.6    40.0
11.7    44.0
11.8    45.0
11.9    46.0
12.0    44.0
12.1    40.0
12.2    41.0
12.3    39.0
12.4    41.0
share|improve this question
    
So you don't want the header information at all? –  cm2 Nov 25 '13 at 18:23
    
I do want to read the header information as well. :) –  user3029076 Nov 25 '13 at 19:32
    
Ok, then you basically parse the header separately; see my answer below. –  cm2 Nov 25 '13 at 21:42

1 Answer 1

up vote 7 down vote accepted

If you don't want the first n rows, try (if there is no missing data):

data = numpy.loadtxt(yourFileName,skiprows=n)

or (if there are missing data):

data = numpy.genfromtxt(yourFileName,skiprows=n)    

If you then want to parse the header information, you can go back and open the file parse the header, for example:

fh = open(yourFileName,'r')
for i,line in enumerate(fh):
    if i is n: break
    do_other_stuff_to_header(line)
fh.close()
share|improve this answer
    
I think I got the idea, will I need to use the csv.dictreader to read in the header? –  user3029076 Nov 25 '13 at 22:34
    
What I have above will loop over the lines until you hit line n and then it will stop. When it loops over them, you can do whatever you want to parse them. –  cm2 Nov 25 '13 at 22:38

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.