str型は center() という関数を持っています。これは、指定された長さに文字列を伸ばし、中央寄せをするものです。
実際の動作は以下のようになります。
>>> 'a'.center(3) ' a ' >>> 'a'.center(5) ' a ' >>> 'aa'.center(4) ' aa ' >>> 'aa'.center(6) ' aa '上の4つの例では、(指定された長さ - 元の文字列の長さ)が偶数です。この場合、挿入される空白文字の数は左右で同じになります。
では、(指定された長さ - 元の文字列の長さ)が奇数の時はどうなるのでしょう。実際の動作を見てみます。
>>> 'a'.center(2) 'a ' >>> 'a'.center(4) ' a ' >>> 'aa'.center(3) ' aa' >>> 'aa'.center(5) ' aa '左の方が空白が1つ少ない場合と、右の方が空白が1つ少ない場合があります。
あまり統一された動作とは言えませんね。
この動作について、こちらでも議論となっています。
結論は「望ましくない動作である。しかし、古くから(2.x時代から)この動作なので、今になって変更すると却って混乱を招く恐れがある。よって、このままとする」となったようです。
0 件のコメント:
コメントを投稿