Ho voluto riempire una stringa con caratteri null ("\ x00"). Conosco molti modi per farlo, quindi per favore non rispondere con alternative. Quello che voglio sapere è: perché la funzione string.format()
di Python non consente il riempimento con valori null?Perché il pad string.format di Python non può essere eseguito con " x00"?
Casi di test:
>>> "{0:\x01<10}".format("bbb")
'bbb\x01\x01\x01\x01\x01\x01\x01'
Questo dimostra che i caratteri esadecimali escape funzionano in generale.
>>> "{0:\x00<10}".format("bbb")
'bbb '
Ma "\ x00" diventa uno spazio ("\ x20").
>>> "{0:{1}<10}".format("bbb","\x00")
'bbb '
>>> "{0:{1}<10}".format("bbb",chr(0))
'bbb '
Anche provare un paio di altri modi per farlo.
>>> "bbb" + "\x00" * 7
'bbb\x00\x00\x00\x00\x00\x00\x00'
Questo funziona, ma non usa spazi string.format
>>> spaces = "{0: <10}".format("bbb")
>>> nulls = "{0:\x00<10}".format("bbb")
>>> spaces == nulls
True
Python è chiaramente sostitutivi (chr(0x20)
) invece di valori nulli (chr(0x00)
).
Si prega di lasciare un commento quando si downprote quindi posso migliorare questa domanda. Ho svolto le mie ricerche e sono a conoscenza di "ljust" e di altri modi per svolgere il compito. Voglio sapere perché python 2.7 si comporta in questo modo. – bonsaiviking
Usa 'stampa" bbb "+" \ x00 "* 7' e otterrai una stringa con 7 spazi. Shell stampa sempre "\ x00" come carattere di spazio. Senza print shell restituisce la versione 'repr' della stringa. –