Ich habe eine Ausgabe von altem Code in Fortran 77. Die Ausgabe mitLesen Standardausgabe von Fortran in Python
write(NUM,*)
Zeile geschrieben wird. Also im Grunde das Standardformat. Im Anschluss wird ein Teil des Ausgangs:
1.25107598E-67 1.89781536E-61 1.28064971E-94 5.85754394-118 8.02718071E-94
hatte ich ein Post-Processing-Tool in F77 geschrieben und READ(NUM,*)
lesen Sie die Eingabedatei korrekt als:
1.25107598000000E-67 1.89781536000000E-61 1.28064971000000E-94 5.85754394000000E-118 8.02718071000000E-94
Die problematische Zahl ist 5.85754394-118
. Es wird korrekt gelesen, da es 5.85754394E-118
in F77 bedeutet.
jedoch jetzt habe ich eine Nachverarbeitung in Python, und ich habe folgende Codezeile:
Z = numpy.fromstring(lines[nl], dtype=float, sep=' ')
, die eine Ausgangsleitung für Zeile (durch die Schleife auf nl
) gelesen wird. Aber wenn es die 5.85754394-118
Nummer erreicht, wird es aufhören zu lesen, zur nächsten Zeile der Ausgabe gehen und grundsätzlich falsche Nummer lesen. Gibt es eine Möglichkeit, es richtig zu lesen (Standardform von Fortran)? Ich denke, ich muss dtype
Option ändern, aber keine Ahnung haben.
Sie meinen, Sie können Ihre seltsam formatierte Nummer nicht nachbearbeiten? –
Ja! das ist richtig –
Können Sie den Fortran-Code, der den korrupten Wert schreibt, leicht ändern? Siehe http://stackoverflow.com/questions/24004824/for-three-digit-exponents-fortran-drops-the-e-in-the-output –