2013-11-25 14 views
10

Tôi có tệp với một số siêu dữ liệu và sau đó là một số dữ liệu thực tế bao gồm 2 cột có tiêu đề. Tôi có cần phải tách riêng hai loại dữ liệu trước khi sử dụng genfromtxt trong không? Hoặc tôi có thể phân chia dữ liệu bằng cách nào đó? Điều gì về việc đặt con trỏ tập tin vào cuối dòng ngay phía trên tiêu đề, và sau đó thử genfromtxt từ đó? Cảm ơn Định dạng của tập tin được hiển thị dưới đây:Đọc dữ liệu vào mảng có nhiều mảng từ tệp văn bản

&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 
+0

Vì vậy, bạn không muốn thông tin tiêu đề? – cm2

+0

Tôi cũng muốn đọc thông tin tiêu đề. :) – user3029076

+0

Ok, sau đó bạn phân tích cú pháp tiêu đề một cách riêng biệt; xem câu trả lời của tôi dưới đây. – cm2

Trả lời

20

Nếu bạn không muốn n hàng đầu tiên, hãy thử (nếu không có dữ liệu còn thiếu):

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

hoặc (nếu có thiếu dữ liệu):

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

Nếu sau đó bạn muốn phân tích các thông tin tiêu đề, bạn có thể quay trở lại và open tập tin phân tích tiêu đề, ví dụ:

fh = open(yourFileName,'r') 
for i,line in enumerate(fh): 
    if i is n: break 
    do_other_stuff_to_header(line) 
fh.close() 
+0

Tôi nghĩ rằng tôi đã có ý tưởng, tôi sẽ cần phải sử dụng csv.dictreader để đọc trong tiêu đề? – user3029076

+0

Những gì tôi có ở trên sẽ lặp lại trên các dòng cho đến khi bạn nhấn dòng 'n' và sau đó nó sẽ dừng lại. Khi nó vòng qua chúng, bạn có thể làm bất cứ điều gì bạn muốn phân tích chúng. – cm2

+0

làm cách nào để không nhập n dòng cuối cùng? – Swift

Các vấn đề liên quan