2010-02-25 24 views
5

¿es posible alguna forma de "imprimir" en python de la misma manera?¿Es posible imprimir en Fortran en python?

1  4.5656 
2 24.0900 
3 698.2300 
4 -3.5000 

Entonces, ¿los puntos decimales están siempre en la misma columna, y obtenemos siempre 3 o n números decimales?

Gracias

+0

y justo última pregunta, si tengo que imprimir 1000 líneas y tengo tres flotadores en cada uno, ¿cómo se puede hacer eso para: 10spaces, f1 formateado, 5spaces, f2 formateado, 5spaces, f3 formateados donde fi formateado es % 11.4f – flow

Respuesta

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

o el nuevo formato de estilo:

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

más acerca format specifiers in the docs.

+3

oooh nuevo estilo ... brillante :) –

+0

hola gracias! y por último, digamos que tengo tres flotadores f1, f2, f3, ¿cómo puedo imprimirlos? Intenté '% 11.4f'% f1, f2, f3 pero nada – flow

+0

@werner: uso ''% 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 

se alinear a la derecha el número f (como un aparte: estaría alineado a la izquierda %-10.3f). La cadena se alineará a la derecha con 10 caracteres (ya no funciona con> 10 caracteres) y exactamente 3 dígitos decimales. Por lo tanto:

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

Como una prueba para su set de ejemplo lo siguiente:

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

Puede utilizar string.rjust(), de esta manera:

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) 

que da:

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

También puede consultar el fortranformat biblioteca en PyPI o project page si desea recrear completamente el texto de FORTRAN IO.

Si tiene alguna pregunta, envíeme un correo electrónico (la escribí).

0

Fortran io es totalmente diferente al estilo C io en todos los sentidos.

Vaya para el paquete fortranformat de Brendan.

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

easy_install fortranformat 

Esto permite que los archivos de entrada FORTRAN viejos arcanos a ser creados con mucho menos prueba y error de tratar de utilizar el formato de cadenas estilo C.

+0

Para no conocer el propósito de esta respuesta Tampoco sé qué encuentras arcano en el formato Fortran. Es bastante similar al formato C. –

+0

@VladimirF Estoy bastante familiarizado con el formateo Fortran. Estoy mucho menos familiarizado con el formato C. He encontrado que este módulo es extremadamente útil en los casos en que un programa heredado espera que la entrada se formatee 'exactamente'. Puedo (casi) copiar y pegar las declaraciones de formato cuando uso este módulo.C/F traduciendo un conjunto de declaraciones como formato 4001 (i4.4, ':', e15.7) formato 4002 (i4.4, ':', 3x, a7,2i5, ':', 1a4) formato 4003 (i4.4, ':', 1a1) formato 4004 (i4.4, ':', i5) formato 4014 (i4.4, ':', 2x, A5) formato 4005 (60i3) – user5061

+0

Si eso es una reacción a mi comentario, probablemente no lo entendiste ¿Por qué arcano? ¿Y por qué esta respuesta existe? –

Cuestiones relacionadas