2009-06-03 14 views
7

Tengo una tabla de datos de 44 columnas de ancho que debo escribir en el archivo. No quiero escribir:¿hay un especificador de formato múltiple en Python?

outfile.write("%i,%f,%f,$f ...)\n" % (i, a,b,c ...)) 

En Fortran puede especificar múltiples especificadores de formato fácilmente:

write (*,"(3f8.3)") a,b,c 

¿Existe una capacidad similar en Python?

Respuesta

20
>>> "%d " * 3 
'%d %d %d ' 
>>> "%d " * 3 % (1,2,3) 
'1 2 3 ' 
+0

Gracias por la publicación, no sabía esto. También funcionó cuando lo probé como parte de una impresión en un programa: print "% d" * 3% (1, 2, 3) – PTBNL

+3

Tenga en cuenta que el operador * no es específico para los especificadores de formato; le dice a Python que duplique la secuencia anterior X veces. Como una cadena es una secuencia, y los especificadores de formato son solo cadenas ... –

+0

@ChrisB .: No "_duplicar X veces_", sino "_multiplicar X veces_", creo :) La primera podría entenderse como si '"% d "* 3" sería igual a '((("% d "* 2) * 2) * 2)'. – Tadeck

3

lo preguntas sobre

format= "%i" + ",%f"*len(row) + "\n" 
outfile.write(format % ([i]+row)) 
0

no es exactamente la misma, pero se puede intentar algo como esto:

values=[1,2.1,3,4,5] #you can use variables instead of values of course 
outfile.write(",".join(["%f" % value for value in values])); 
0

en cuenta que yo creo que sería mucho mejor haga algo como:

outfile.write(", ".join(map(str, row))) 

... que no es lo que usted lo pidió, pero es mejor en un par de formas.

Cuestiones relacionadas