2009-06-03 12 views
7

Ho una tabella di 44 colonne di dati che ho bisogno di scrivere su file. Non voglio scrivere:esiste un identificatore di più formati in Python?

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

In Fortran è possibile specificare più identificatori di formato facilmente:

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

Esiste una funzionalità simile in Python?

risposta

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

Grazie per il post, non lo sapevo. Ha funzionato anche quando l'ho provato come parte di una stampa in un programma: stampa "% d" * 3% (1, 2, 3) – PTBNL

+3

Si noti che l'operatore * non è specifico per la formattazione degli identificatori; dice a Python di duplicare la sequenza X precedente. Poiché una stringa è una sequenza e gli specificatori di formato sono solo stringhe ... –

+0

@ChrisB .: Non "_duplicate X volte_", ma "_multiply X volte_", credo :) Il primo potrebbe essere interpretato come se ""% d "* 3' sarebbe uguale a' ((("% d" * 2) * 2) * 2) '. – Tadeck

3

stai chiedendo circa

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

non è esattamente lo stesso, ma si può provare qualcosa di simile:

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

Nota che penso che sarebbe molto meglio fare qualcosa come:

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

... che non è wha te l'hai chiesto, ma è meglio in un paio di modi.

Problemi correlati