文字列をスペースで埋めたい。私は以下がゼロのために働くことを知っています:
>>> print "'%06d'"%4
'000004'
しかし、これが欲しいときはどうすればいいですか?
'hi '
もちろん、文字列の長さを測定してstr+" "*leftover
を実行することもできますが、最短の方法が欲しいのです。
str.ljust(width[, fillchar])
でこれを行うことができます。
長さ幅の文字列で左揃えされた文字列を返します。パディングは、指定されたfillcharを使用して行われます(デフォルトはスペースです)。 widthが
len(s)
より小さい場合、元の文字列が返されます。
>>> 'hi'.ljust(10)
'hi '
Python 2.5をサポートする必要がなければ、 文字列フォーマットのミニ言語 を使うことができます(そしておそらくそうすべきです):
'{0: <16}'.format('Hi')
新しい(ish) 文字列フォーマットの方法 を使うと、ネストしたキーワード引数で楽しいことができます。最も単純なケース:
>>> '{message: <16}'.format(message='Hi')
'Hi '
あなたが変数として16
を渡したいならば:
>>> '{message: <{width}}'.format(message='Hi', width=16)
'Hi '
キット全体とkaboodle の変数を渡したい場合は、
'{message:{fill}{align}{width}}'.format(
message='Hi',
fill=' ',
align='<',
width=16,
)
結果は次のようになります(あなたはそれを推測しました)。
'Hi '
これを試すことができます:
print "'%-100s'" % 'hi'
これを行う正しい方法は、 公式ドキュメント で説明されているようにPythonのフォーマット構文を使用することです
この場合それは単にあるでしょう:'{:10}'.format('hi')
次のように出力されます。'hi '
説明:
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" | "%"
あなたが知る必要があるほとんどすべてがそこにあります^。
更新:python 3.6以降、文字列の内挿がさらに便利になりました。
foo = 'foobar'
print(f'{foo:10} is great!')
# foobar is great!
str.ljust()
を使用します。
>>> 'Hi'.ljust(6)
'Hi '
文字列のフォーマットについては、 string.zfill()
、 str.ljust()
、および str.center()
も考慮する必要があります。これらは連鎖させることができ、 'fill'文字を指定することができます。
>>> ('3'.zfill(8) + 'blind'.rjust(8) + 'mice'.ljust(8, '.')).center(40)
' 00000003 blindmice.... '
これらの 文字列フォーマット操作 はPython v2とv3で動作するという利点があります。
pydoc str
いつか見てください:そこにはたくさんの良いものがあります。
Python 3.6では、あなたはただできるだけです。
>>> strng = 'hi'
>>> f'{strng: <10}'
あるいは、あなたのパディングサイズが次のように変数の中にあるならば(ありがとう@Matt M.!):
>>> to_pad = 10
>>> f'{strng: <{to_pad}}'
center あなたの文字列もできます。
'{0: ^20}'.format('Nice')
0を削除するだけで、スペースが追加されます。
>>> print "'%6d'"%4
スライスを使用するほうがPythonicではないでしょうか。
たとえば、10文字の長さになるまで文字列の右側にスペースを埋め込むには、次のようにします。
>>> x = "string"
>>> (x + " " * 10)[:10]
'string '
15文字の長さになるまで、左側にスペースを埋めます。
>>> (" " * 15 + x)[-15:]
' string'
もちろん、どれだけ長くパディングしたいのかを知る必要がありますが、始めの弦の長さを測定する必要はありません。
あなたはリスト内包表記を使ってそれをすることができます、これはあなたにスペースの数についてもあなたに考えを与えるでしょう、そしてそれは一つのライナーになるでしょう。
"hello" + " ".join([" " for x in range(1,10)])
output --> 'hello '
さまざまな印刷形式の代わりに使用するのにいいコツ:
(1)右側を空白で埋めます。
('hi' + ' ')[:8]
(2)左側に先行ゼロを埋めます。
('0000' + str(2))[-4:]
+ =は文字列に追加するために使用できます
>>> string = 'hi'
>>> for s in range(0,5):
... string += ' '
...
>>> string
'hi '