2017-03-29 2 views
0

Ich versuche, einen String-Wert aus einer bestimmten Spalte in einer bestimmten Zeile in meiner ASCII-Datei zu analysieren. Im Folgenden werde ich aufgenommen haben, was ich zu diesem Punkt versucht haben, erhalten die Fehler, die ich, wenn ich diesen Code lief ist:Wie analysiere ich eine bestimmte Spalte von einer bestimmten Zeile in einer ASCII-Datei?

Attribute: 'list' object has no attribute 'split'` 

Code:

import numpy as np 
import matplotlib.pyplot as plt 

f = open('zz_ssmv11034tS__T0001TTNATS2012021505HP001.Hdr', 'r') 

line = f.readlines(49) 
columns = line.split() 
time = columns(2) 
print (time) 

f.close() 
+0

Listen haben keine '.split()' Funktion. Was versuchst du zu machen? –

Antwort

0

ich eine Funktion erstellen, würde es zu tun.
Beachten Sie, dass Zeilen- und Spaltennummer von 1 an gezählt werden, nicht Null.

def find_line_and_column(filename, line_num, column_num): 
    with open(filename, 'r') as file: 
     for i in range(line_num-1): # skip over lines before the desired one 
      next(file) 
     line = next(file) # read the desired line 
     return line.split()[column_num-1] 

# sample usage 
print(find_line_and_column('zz_ssmv11034tS__T0001TTNATS2012021505HP001.Hdr', 4, 3)) 

Alternativ mit der islice() Funktion in itertools Modul erlauben würde, es ein wenig kurz und bündig zu tun:

import itertools 

def find_line_and_column(filename, line_num, column_num): 
    with open(filename, 'r') as file: 
     line = next(itertools.islice(file, line_num-1, None), None) # get line_num-th line 
     return line.split()[column_num-1] 
Verwandte Themen