2009-06-03 20 views
7

Ich habe eine Datentabelle 44 Spalten breit, die ich in Datei schreiben muss. Ich will nicht schreiben:Gibt es in Python einen Mehrfachformat-Bezeichner?

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

In Fortran können Sie ganz einfach mehrere Formatbezeichner angeben:

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

Gibt es eine ähnliche Fähigkeit in Python?

Antwort

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

Danke für die Post, ich wusste das nicht. Es funktionierte auch, wenn ich es als Teil eines Drucks in einem Programm versuchte: print "% d" * 3% (1, 2, 3) – PTBNL

+3

Beachten Sie, dass der Operator * nicht für Formatbezeichner spezifisch ist; es teilt Python mit, die vorherige Sequenz X-mal zu duplizieren. Da ein String eine Sequenz ist, und Formatbezeichner sind nur Strings ... –

+0

@ChrisB .: Nicht "_duplicate X mal_", aber "_multiply X mal_", glaube ich :) Ersteres könnte so verstanden werden, als wäre '"% d "* 3" wäre gleich "((("% d "* 2) * 2) * 2)'. – Tadeck

3

Sind Sie fragen über

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

Ist das nicht genau das gleiche, aber man kann so etwas wie dies versuchen:

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

Bitte beachte, dass ich denke, es viel besser wäre zu etwas tun wie:

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

... was nicht wha ist Sie haben gefragt, aber es ist in vielerlei Hinsicht besser.

Verwandte Themen