786 Stimmen

Wie kann ich eine Python-Zeichenkette mit Leerzeichen auffüllen?

Ich möchte eine Zeichenkette mit Leerzeichen auffüllen. Ich weiß, dass das Folgende für Nullen funktioniert:

>>> print  "'%06d'"%4
'000004'

Aber was soll ich tun, wenn ich das will?

'hi    '

Natürlich kann ich die Länge der Schnur messen und str+" "*leftover aber ich möchte den kürzesten Weg wählen.

1013voto

Felix Kling Punkte 751464

Sie können dies tun mit str.ljust(width[, fillchar]) :

Rückgabe der Zeichenkette linksbündig in einer Zeichenkette der Länge Breite . Das Auffüllen erfolgt unter Verwendung der angegebenen Füllzeichen (Standard ist ein Leerzeichen). Die ursprüngliche Zeichenkette wird zurückgegeben, wenn Breite ist kleiner als len(s) .

'hi'.ljust(10) 'hi '

618voto

simon Punkte 13817

Für eine flexible Methode, die auch bei der Formatierung komplizierter Strings funktioniert, sollten Sie wahrscheinlich die Mini-Sprache für die String-Formatierung ,

entweder mit f-strings

>>> f'{"Hi": <16} StackOverflow!'  # Python >= 3.6
'Hi               StackOverflow!'

oder die str.format() Methode

>>> '{0: <16} StackOverflow!'.format('Hi')  # Python >=2.6
'Hi               StackOverflow!'

229voto

CivFan Punkte 11816

Die neue(n) String-Format-Methode können Sie einige lustige Dinge mit verschachtelten Schlüsselwortargumenten tun. Der einfachste Fall:

>>> '{message: <16}'.format(message='Hi')
'Hi             '

Wenn Sie Folgendes eingeben möchten 16 als eine Variable:

>>> '{message: <{width}}'.format(message='Hi', width=16)
'Hi              '

Wenn Sie Variablen für die das ganze Drum und Dran :

'{message:{fill}{align}{width}}'.format(
   message='Hi',
   fill=' ',
   align='<',
   width=16,
)

Das Ergebnis ist (Sie haben es erraten):

'Hi              '

Und für all das können Sie Folgendes verwenden python 3.6+ f-strings :

message = 'Hi'
fill = ' '
align = '<'
width = 16
f'{message:{fill}{align}{width}}'

Und natürlich das Ergebnis:

'Hi              '

96voto

abbot Punkte 26222

Sie können dies versuchen:

print "'%-100s'" % 'hi'

90voto

Granitosaurus Punkte 18849

Der korrekte Weg, dies zu tun, wäre die Verwendung von Pythons Format-Syntax wie in die offizielle Dokumentation

In diesem Fall wäre es einfach:
'{:10}'.format('hi')
die ausgibt:
'hi '

Erläuterung:

format_spec ::=  [[fill]align][sign][#][0][width][,][.precision][type]
fill        ::=  <any character>
align       ::=  "<" | ">" | "=" | "^"
sign        ::=  "+" | "-" | " "
width       ::=  integer
precision   ::=  integer
type        ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

Dort steht so ziemlich alles, was Sie wissen müssen ^.

Aktualisieren: Ab Python 3.6 ist es sogar noch bequemer mit literaler String-Interpolation!

foo = 'foobar'
print(f'{foo:10} is great!')
# foobar     is great!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X