Ich wollte eine Zeichenfolge mit Nullzeichen ("\ x00") auffüllen. Ich kenne viele Möglichkeiten, dies zu tun, also bitte nicht mit Alternativen antworten. Was ich wissen will, ist: Warum erlaubt Pythons string.format()
Funktion kein Auffüllen mit Nullen?Warum kann Pythons string.format Pad nicht mit " x00"?
Testfälle:
>>> "{0:\x01<10}".format("bbb")
'bbb\x01\x01\x01\x01\x01\x01\x01'
Dies zeigt, dass hex-Escape-Zeichen in der Regel arbeiten.
>>> "{0:\x00<10}".format("bbb")
'bbb '
Aber "\ x00" wird in ein Leerzeichen ("\ x20") umgewandelt.
>>> "{0:{1}<10}".format("bbb","\x00")
'bbb '
>>> "{0:{1}<10}".format("bbb",chr(0))
'bbb '
Auch versuchen ein paar andere Möglichkeiten, es zu tun.
>>> "bbb" + "\x00" * 7
'bbb\x00\x00\x00\x00\x00\x00\x00'
Dies funktioniert, aber nicht string.format
>>> spaces = "{0: <10}".format("bbb")
>>> nulls = "{0:\x00<10}".format("bbb")
>>> spaces == nulls
True
Python nicht verwendet wird klar ersetzen Räume (chr(0x20)
) anstelle von NULL-Werte (chr(0x00)
).
Bitte hinterlassen Sie einen Kommentar, wenn Sie downvote, damit ich diese Frage verbessern kann. Ich habe meine Forschung getan und weiß über 'nur 'und andere Wege, die Aufgabe zu erfüllen. Ich möchte wissen, warum sich Python 2.7 so verhält. – bonsaiviking
Verwenden Sie 'print' bbb" + "\ x00" * 7' und Sie erhalten eine Zeichenfolge mit 7 Leerzeichen. Shell druckt immer "\ x00" als Leerzeichen. Ohne print shell gibt die 'repr'-Version der Zeichenfolge zurück. –