2016-03-21 1 views
3

Wie kann ich das String-Format einrichten, so dass ich eine Variable verwenden kann, um sicherzustellen, dass die Länge wie erforderlich ändern kann? Nehmen wir beispielsweise an, dass die Länge zuerst 10 war, dann ändert sich die Eingabe, und die Länge wird 15. Wie würde ich die Format-Zeichenfolge aktualisieren?Wie Sie die Leerzeichen in einem String-Format in Python 3 setzen

Offensichtlich ist die obige Syntax falsch, aber ich kann nicht herausfinden, wie man das zur Arbeit bringt.

+0

Können Sie Ihren Einzug korrigieren? Versuchen Sie, innerhalb der for-Schleife zu drucken? –

+1

Bitte zeigen Sie die Beispieleingabe und die erwartete Ausgabe an. – wwii

+0

Warum würden Sie 'print (s)' nicht benutzen? Es wird drucken, was immer es ist. –

Antwort

4

Mit str.format

>>> length = 20 
>>> string = "some string" 
>>> print('{1:>{0}}'.format(length, string)) 
     some string 
+0

Aw, ich habe es gerade selbst gefunden! ;-) –

+2

Beste Seite für Python-String-Formatierung https://pyformat.info/#string_pad_align –

0

Sie können wie folgt erklären:

print('%20s'%'stuff') 

20 die Anzahl der Zeichen in der Druckzeichenfolge sein würde. Der Überschuss in Leerzeichen.

+0

Länge ändert die Menge an Leerraum, es ist nicht was gedruckt wird – uhexos

+0

Ich habe es einfach gedruckt . Ich bin mir ziemlich sicher, dass ich Leerraum sehe. – armatita

+3

Das OP versucht, eine Formatzeichenfolge abzurufen, die nicht davon abhängt, dass die Länge der Zeit bekannt ist. Er möchte die Länge ändern können, aber die gleiche Formatzeichenfolge verwenden. tobias_ks Antwort sollte dir die Idee geben. – zondo

2

können Sie %*s verwenden und in length als einen anderen Parameter übergeben:

>>> length = 20 
>>> string = "some string" 
>>> print("%*s" % (length, string)) 
     some string 

Oder einen Format-String verwenden, um das Format-String zu erstellen:

>>> print(("%%%ds" % length) % string) 
     some string 
+0

Es gibt auch eine Möglichkeit, dies mit 'str.format' zu tun, aber ich kann mich nicht erinnern oder finde es gerade jetzt ... –

+0

Siehe meine Antwort :) –

1

Die format Methode al lows nice keyword arguments kombiniert mit positional arguments:

>>> s = 'my string' 
>>> length = 20 
>>> '{:>{length}s}'.format(s, length=length) 
'   my string' 
Verwandte Themen