2017-04-13 2 views
0

Ich mag würde können Strings wie diese drucken:mehrzeilige Argumente Pythons .format

text1 v1 text2 v3 
     v2  v4 

wo die vi Variablen sind. Ich versuchte dies:

"text1 {} text2 {}".format("v1\nv2", "v3\nv4") 

Aber vorhersagbar, ist dies die Ausgabe gibt

text1 v1 
v2 text2 v3 
v4 

weil der Zeilenumbruch in erste Argument format auf der ganzen Linie gilt.

Gibt es eine schöne Möglichkeit, mehrzeilige Argumente format zu passieren, ohne dass die formatierte Zeichenfolge als Ganzes zu brechen?

+2

Es gibt eine Bibliothek [nur für diese] (https://pypi.python.org/pypi/tabulate). – dhke

+1

lol nee .... das ist nicht, wie das Terminal funktioniert ... Sie könnten in Steuerzeichen aussehen wollen, und oder Flüche ... obwohl diese Antwort ist, sagte @dhke könnte Ihr Problem mehr oder weniger –

+0

@HansSchwabing lösen, überprüfe meine Antwort Ich denke, du fragst nach dem gleichen. –

Antwort

2
pip install tabulate 

Pretty-Print Tabellendaten in Python, eine Bibliothek und ein Befehlszeilen-Dienstprogramm .

from tabulate import tabulate 
table =[["text1", "v1", "text2", "v3"],["", "v2", "", "v4"]] 
print(tabulate(table)) 

"Tabelle" ist übergeordnete Liste und Element davon werden Reihen der zu druckenden Tabelle sein.

1

Sie können tatsächlich tun

In [1]: print "text1 {} text2 {}\n  {}  {}".format("v1", "v3", "v2", "v4") 
text1 v1 text2 v3 
     v2  v4 

ODER

In [2]: print "text1\t{}\ttext2\t{}\n\t{}\t{}".format("v1", "v3", "v2", "v4") 
text1 v1 text2 v3 
     v2   v4 

Die \t bedeutet Registerkarte und \n Newline ist.

Verwandte Themen