webentwicklung-frage-antwort-db.com.de

Wie schneide ich einen String mit str.format in Python ab?

So kürzen Sie einen String mit str.format in Python? Ist es überhaupt möglich?

Es gibt einen width -Parameter, der in der Formatspezifikation der Minisprache erwähnt wird:

format_spec ::=  [[fill]align][sign][#][0][width][,][.precision][type]
...
width       ::=  integer
...

Die Angabe funktioniert anscheinend nur zum Auffüllen, nicht zum Abschneiden:

>>> '{:5}'.format('aaa')
'aaa  '
>>> '{:5}'.format('aaabbbccc')
'aaabbbccc'

Es ist also eher eine minimale Breite als eine wirkliche Breite.

Ich weiß, dass ich Strings schneiden kann, aber die Daten, die ich hier verarbeite, sind vollständig dynamisch, einschließlich des Formatstrings und der eingehenden Argumente. Ich kann nicht einfach einen Slice erstellen.

45
famousgarkin

Verwenden Sie stattdessen .precision:

>>> '{:5.5}'.format('aaabbbccc')
'aaabb'

Nach der Dokumentation der Format Specification Mini-Language :

Die Genauigkeit ist eine Dezimalzahl, die angibt, wie viele Nachkommastellen für einen mit 'f' Und 'F' Formatierten Gleitkommawert oder vor und angezeigt werden sollen Nach dem Komma für einen mit 'g' oder 'G' formatierten Gleitkommawert. Bei Nicht-Zahlentypen gibt das Feld die maximale Feldgröße an - mit anderen Worten, wie viele Zeichen aus dem Feldinhalt verwendet werden. Die Präzision ist für ganzzahlige Werte nicht zulässig.

71
falsetru