Tôi muốn dán một chuỗi có ký tự rỗng ("\ x00"). Tôi biết rất nhiều cách để làm điều này, vì vậy xin vui lòng không trả lời với các lựa chọn thay thế. Những gì tôi muốn biết là: Tại sao chức năng string.format()
của Python không cho phép đệm bằng null?Tại sao không thể sử dụng chuỗi string.format của Python với " x00"?
trường hợp thử nghiệm:
>>> "{0:\x01<10}".format("bbb")
'bbb\x01\x01\x01\x01\x01\x01\x01'
Điều này cho thấy ký tự hex thoát làm việc nói chung.
>>> "{0:\x00<10}".format("bbb")
'bbb '
Nhưng "\ x00" được chuyển thành không gian ("\ x20").
>>> "{0:{1}<10}".format("bbb","\x00")
'bbb '
>>> "{0:{1}<10}".format("bbb",chr(0))
'bbb '
Thậm chí thử một vài cách khác để thực hiện.
>>> "bbb" + "\x00" * 7
'bbb\x00\x00\x00\x00\x00\x00\x00'
này hoạt động, nhưng không sử dụng không gian string.format
>>> spaces = "{0: <10}".format("bbb")
>>> nulls = "{0:\x00<10}".format("bbb")
>>> spaces == nulls
True
Python được thay thế rõ ràng (chr(0x20)
) thay vì null (chr(0x00)
).
Vui lòng để lại nhận xét khi bạn downvote để tôi có thể cải thiện câu hỏi này. Tôi đã thực hiện nghiên cứu của mình và biết về 'ljust' và các cách khác để hoàn thành nhiệm vụ. Tôi muốn biết tại sao python 2.7 hoạt động theo cách này. – bonsaiviking
Sử dụng "in" bbb "+" \ x00 "* 7' và bạn sẽ nhận được một chuỗi có 7 dấu cách. Shell luôn in "\ x00" làm ký tự khoảng trắng. Nếu không có trình bao in trả về phiên bản 'repr' của chuỗi. –