2010-02-25 12 views
5

ist es möglich, eine Art und Weise in Python "Fortran" wie folgt zu "drucken"?Ist Fortran-ähnlicher Druck in Python möglich?

1  4.5656 
2 24.0900 
3 698.2300 
4 -3.5000 

Also ist der Dezimalpunkt immer in der gleichen Spalte, und wir bekommen immer 3 oder n Dezimalzahlen?

Dank

+0

und gerade letzte Frage, wenn ich 1000 Zeilen drucken, und ich habe drei schwimmt auf jeder, wie kann ich tun, dass für: 10spaces, f1 formatiert, vorformatiert 5spaces, f2, 5spaces, f3 formatiert wo fi formatiert ist % 11.4f – flow

Antwort

9
>>> '%11.4f' % -3.5 
' -3.5000' 

oder die neue Stil Formatierung:

>>> '{:11.4f}'.format(-3.5) 
' -3.5000' 

mehr über format specifiers in the docs.

+3

oooh neuer Stil ... glänzend :) –

+0

hallo danke! und letztes thign, sagen wir, ich habe drei floats f1, f2, f3, wie kann ich sie drucken? Ich probierte '% 11.4f'% f1, f2, f3, aber nichts – flow

+0

@werner: Verwenden Sie '% 11.4f% 11.4f% 11.4f '% (f1, f2, f3)' –

0
for i in [(3, 4.534), (3, 15.234325), (10,341.11)]: 
...  print "%5i %8.4f" % i 
... 
    3 4.5340 
    3 15.2343 
    10 341.1100 
0
print "%10.3f" % f 

wird die Anzahl f (Nebenbei: %-10.3f linksbündig würde) rechts auszurichten. Der String wird rechtsbündig auf 10 Zeichen (bei> 10 Zeichen nicht mehr) und genau 3 Dezimalstellen ausgerichtet. Also:

f = 698.230 # <-- 7 characters when printed with %10.3f 
print "%10.3f" % f # <-- will print " 698.2300" (two spaces) 

Als Test für Ihren Beispielsatz wie folgt vor:

print "\n".join(map(lambda f: "%10.3f" % f, [4.5656, 24.09, 698.23, -3.5])) 
0

Sie können string.rjust() verwenden, auf diese Weise:

a = 4.5656 
b = 24.0900 
c = 698.2300 
d = -3.5000 

a = "%.4f" % a 
b = "%.4f" % b 
c = "%.4f" % c 
d = "%.4f" % d 

l = max(len(a), len(b), len(c), len(d)) 

for i in [a, b, c, d]: 
     print i.rjust(l+2) 

Welche gibt:

~ $ python test.py 
    4.5656 
    24.0900 
    698.2300 
    -3.5000 
5

Sie könnten auch einen Blick auf diewerfenBibliothek auf PyPI oder die project page, wenn Sie FORTRAN Text IO vollständig neu erstellen wollten.

Wenn Sie Fragen haben, senden Sie mir eine E-Mail (ich schrieb es).

0

Fortran io unterscheidet sich in jeder Hinsicht vom C-Stil.

Gehen Sie für Brendans Fortranformat-Paket.

https://pypi.python.org/pypi/fortranformat

easy_install fortranformat 

Dies ermöglicht obskure alte Fortran Eingabedateien mit viel weniger Versuch und Irrtum geschaffen werden, als zu versuchen CStrings Formatierung zu verwenden.

+0

Den Grund dieser Antwort nicht zu kennen Ich weiß auch nicht, was Sie bei der Formatierung von Fortran arkanisch finden. Es ähnelt der C-Formatierung. –

+0

@VladimirF Ich bin ziemlich vertraut mit Fortran Formatierung. Ich bin viel weniger vertraut mit C-Formatierung. Ich fand dieses Modul sehr nützlich in Fällen, in denen ein Legacy-Programm Eingaben erwartet, die nur so formatiert sind. Ich bin in der Lage (fast) Copy-Paste die Format-Anweisungen, wenn Sie dieses Modul verwenden.C/F übersetzt eine Reihe von Anweisungen wie 4001-Format (i4.4, ':', e15.7) 4002-Format (i4.4, ':', 3x, a7,2i5, ':', 1a4) 4003-Format (i4.4, ':', 1a1) 4004-Format (i4.4, ':', i5) 4014-Format (i4.4, ':', 2x, A5) 4005-Format (60i3) – user5061

+0

Wenn das eine Reaktion auf ist mein Kommentar, du hast es wahrscheinlich nicht verstanden. Warum geheimnisvoll? Und warum existiert diese Antwort überhaupt? –