ヌル文字( "\ x00")で文字列を埋めたいと思っていました。私はこれを行う方法がたくさんあることを知っているので、代わりに答えないでください。私が知りたいのは、なぜPythonのstring.format()
関数がヌルで埋め込めないのですか?なぜPythonのstring.formatは " x00"で埋められないのですか?
テストケース:
>>> "{0:\x01<10}".format("bbb")
'bbb\x01\x01\x01\x01\x01\x01\x01'
これが進エスケープ文字は、一般的に働くことを示しています。
>>> "{0:\x00<10}".format("bbb")
'bbb '
「\ x00」はスペース(「\ x20」)に変わります。
>>> "{0:{1}<10}".format("bbb","\x00")
'bbb '
>>> "{0:{1}<10}".format("bbb",chr(0))
'bbb '
他にもいくつか方法を試してみてください。
>>> "bbb" + "\x00" * 7
'bbb\x00\x00\x00\x00\x00\x00\x00'
これは動作しますが、string.format
>>> spaces = "{0: <10}".format("bbb")
>>> nulls = "{0:\x00<10}".format("bbb")
>>> spaces == nulls
True
のPython明確に代入しているスペース(chr(0x20)
)の代わりに、ヌル(chr(0x00)
)を使用していません。
私はこの質問を改善することができますので、あなたがdownvoteときにコメントを残してください。私は自分の研究を行い、「ljust」やその他の作業方法を知っています。なぜPython 2.7がこのように動作するのかを知りたい。 – bonsaiviking
'print" bbb "+" \ x00 "* 7'を使うと、スペース7文字列が得られます。シェルは常にスペース文字として "\ x00"を表示します。 print shellがなければ、文字列の 'repr'版を返します。 –