2013-11-25 15 views
10

Mam plik z pewnymi metadanymi, a następnie niektóre rzeczywiste dane składające się z 2 kolumn z nagłówkami. Czy muszę oddzielić dwa typy danych przed użyciem genfromtxt w numpy? A może w jakiś sposób mogę podzielić dane? Co powiesz na umieszczenie wskaźnika pliku na końcu linii tuż nad nagłówkami, a następnie wypróbowanie stamtąd genfromtxt? Dzięki Format pliku znajduje się poniżej:Odczytywanie danych do numpy array z pliku tekstowego

&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

Więc nie chcesz w ogóle informacji o nagłówku? – cm2

+0

Chcę również przeczytać informacje w nagłówku. :) – user3029076

+0

Ok, to zasadniczo analizować nagłówek oddzielnie; zobacz moją odpowiedź poniżej. – cm2

Odpowiedz

20

Jeśli nie chcesz pierwszych n wiersze, spróbuj (jeśli nie ma brakujące dane):

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

lub (jeśli istnieje brakuje danych):

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

Jeśli następnie chcemy analizować informacje z nagłówka, można wrócić i open plik analizować nagłówek, na przykład:

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

Myślę, że mam pomysł, czy będę musiał użyć csv.dictreader do odczytu w nagłówku? – user3029076

+0

Co mam powyżej będzie pętli nad liniami aż do linii 'n', a następnie zatrzyma się. Kiedy pętle nad nimi, możesz zrobić, co chcesz, aby je przeanalizować. – cm2

+0

jak nie zaimportować ostatnich n linii? – Swift

Powiązane problemy