tut es Dies wird aber mit einer Einschränkung:
import numpy as npy
usecols = (0, 1)
header = {}
with open(filename, 'rt') as f:
for header_lines, line in enumerate(f):
line = line.strip()
if not line: break # assume that a blank line means "header stops here"
key, value = line.split(' ', 1)
header[key] = value
depth, N = npy.loadtxt(filename, skiprows=header_lines + 2, unpack=True, usecols=usecols)
Das Problem ist, dass das Header-Format Zweideutigkeit hat, was Schlüssel ist, und was Wert ist. Einige Schlüssel scheinen mehrere durch Leerzeichen getrennte Wörter zu sein, und einige Werte sind es auch, und dennoch (eine nicht-deterministische Menge von) Leerzeichen ist auch anscheinend die einzige Regel für die Trennung von Schlüssel von Wert. In den meisten Fällen sind es 3 Leerzeichen zwischen Schlüssel und Wert, aber Corner Distance
wird nur von 1 Leerzeichen gefolgt - es ist daher mehrdeutig (außer für den eigenen komplexen Kontextparser des menschlichen Gehirns), wo der Schlüssel endet und der Wert beginnt.
Vielleicht ist das Problem nur schlechtes Rendering (auf dieser Seite oder beim Kopieren-Einfügen in SO) von dem, was eigentlich Registerkarten sein sollen. Wenn ja,
key, value = line.split('\t', 1)
wird das Problem lösen. Wenn nicht, muss die Mehrdeutigkeit im Dateiformat gelöst werden, bevor eine endgültige Lösung geschrieben werden kann.
Die Einträge zu lesen in Der Header ist durch ein '\ t'-Trennzeichen getrennt. Also kann ich das als eine sichere Möglichkeit benutzen, die Strings zu teilen. –