2017-06-29 3 views
0

Wie wird der Zeilenumbruch im Code nicht gedruckt? (Python 2.7)Drucken n aber nicht ästhetische Zeilenumbrüche?

Beispiel:

print("Hello world, this is a very very long sentence with variables 1:\n%s\nVariable 2:\n%s\nVariable 3:\n%s\nVariable 4:\n%s\nVariable 5:\n%s" % (var1, var2, var3, var4, var5)) 

In der Tat gibt es mehrere Variablen, aber ich schneide diese bis 5 für das Beispiel.

Ich brauche das '\ n'.

Für eine bessere Lesbarkeit muss ich diese print Anweisung auf mehrere Zeilen innerhalb des Codes schreiben. Wenn Sie jedoch einige Zeilenumbrüche einfügen, werden diese Zeilenumbrüche in der Ausgabe angezeigt (was ich nicht möchte).

Gibt es eine Möglichkeit, keine Zeilenumbrüche anzuzeigen (aber das gewünschte '\ n' anzuzeigen)?

+0

Meinen Sie die Newline unterdrücken dass 'print()' nach jedem Aufruf druckt? In diesem Fall können Sie das Schlüsselwort "end" verwenden: 'print (, end = '')'. –

+0

Bitte beachten Sie auch die Verwendung von 'print (" Hallo Welt, {} {} {} ". Format (1,2,3))' – Torxed

+0

Duplizieren: https://stackoverflow.com/questions/10660435/pythonic-way-to -create-a-long-multi-line-string – NieDzejkob

Antwort

0

Die Lösung, die für mich ohne die indent Tabs gearbeitet sieht so:

   printtxt = ("Variables {} <- {} estimation parameters are:\n" 
          "Retval: {}\n" 
          "Charge transfert:\n {} \n" 
          "Amount:\n {} \n" 
          "Stats:\n {} \n" 
          "ZHA:\n {} \n" 
          "First eig (rad):\n {} \n" 
          "First eig (deg.):\n {} \n" 
          "Trans. :\n {} \n" 
          "Valids:\n {} \n" 
          "Dot product:\n {} \n" 
          ) 

       print(printtxt.format(var1, var2, var3, 
             var4, var5, var6, 
             var7, var8, 
             (var90,var91,var92), 
             var10, var11, 
             (np.dot(A,B.T)) 
            ) 
        ) 

Dies gilt auch für das Schreiben der Ergebnisse in einer Datei funktioniert:

   f1.write(printtxt.format(var1, var2, var3, 
             var4, var5, var6, 
             var7, var8, 
             (var90,var91,var92), 
             var10, var11, 
             (np.dot(A,B.T)) 
            ) 
        ) 
1

Es gibt mehrere Möglichkeiten, eine Druckanweisung zu trennen. Aus Ihrer Beschreibung (wobei explizite Zeilenumbrüche) Sie wollen:

print(
    "Hello world, this is a very very long sentence with variables " + 
    "1:\n" + 
    "{}\n".format(var1) + 
    "Variable 2:\n" + 
    "{}\n".format(var2) + 
    "Variable 3:\n" + 
    "{}\n".format(var3) + 
    ...etc 
) 

die Ergebnisse:

>>> var1 = "test1" 
>>> var2 = "test2" 
>>> var3 = "test3" 
>>> print(
     "Hello world, this is a very very long sentence with variables " + 
     "1:\n" + 
     "{}\n".format(var1) + 
     "Variable 2:\n" + 
     "{}\n".format(var2) + 
     "Variable 3:\n" + 
     "{}\n".format(var3) 
    ) 
Hello world, this is a very very long sentence with variables 1: 
test1 
Variable 2: 
test2 
Variable 3: 
test3 

>>> 

ich viel lieber:

print(
""" 
Hello world, this is a very very long sentence with variables 1: 
{} 
Variable 2: 
{} 
Variable 3: 
{} 
""".format(var1, var2, var3) 
) 

... für die gleichen Ergebnisse.

+0

Das scheint besser und sauberer, danke. Aber mit der letzten Lösung habe ich hässliche große Leerzeichen bekommen, wenn der Code eingerückt wurde, da er die Einzug-Tabs berücksichtigte. Also, erste Variante ist besser. Ohne die "Plus" -Zeichen. –

2

Ich würde persönlich nur eine mehrzeilige Zeichenfolge als Vorlage verwenden, macht den Code viel sauberer. Wenn Sie mehr Features zum Spielen möchten, schauen Sie sich das String-Modul an.

variables = (1, 2, 3, 4, 5) 


text =""" 
Hello world, this is a very ver long sentence with variables: 
Varible 1: 
{} 
Varible 2 
{} 
Varible 3: 
{} 
Varible 4: 
{} 
Varible 5: 
{}""" 

print(text.format(*variables)) 
+0

Dadurch werden auch die Einzug-Registerkarten ausgedruckt, was zu einem unschönen Ergebnis führt. Man muss Thins auf neuen Linien trennen, wie das Beispiel Alan Leuthard erklärt hat. –

+1

Es gibt ein linkes Alignment im String-Modul, Sie können es aber auch nur linksstreifen. – Rosh

Verwandte Themen