web-dev-qa-db-ja.com

Pythonでstr.formatを使用して文字列を切り捨てる方法は?

Pythonで str.format を使用して文字列を切り捨てる方法は?それも可能ですか?

Format Specification Mini-Language に記載されているwidthパラメーターがあります。

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

しかし、それを指定することはパディングに対してのみ機能し、切り捨てることはできません。

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

したがって、実際の幅よりも最小の幅になります。

文字列をスライスできることは知っていますが、ここで処理するデータは、フォーマット文字列や入力する引数など、完全に動的です。

45
famousgarkin

代わりに.precisionを使用します。

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

Format Specification Mini-Language のドキュメントによると:

precisionは、'f'および'F'でフォーマットされた浮動小数点値の小数点以下、またはその前に表示される桁数を示す10進数です。 'g'または'G'でフォーマットされた浮動小数点値の小数点以下。 数値以外のタイプの場合、フィールドは最大フィールドサイズを示します-つまり、フィールドコンテンツから使用される文字数です。precisionは整数値には使用できません。

71
falsetru