Почему Python не может помещаться в string.format с "\ x00"?

Мне нужно заполнить строку нулевыми символами ("\ x00"). Я знаю много способов сделать это, поэтому, пожалуйста, не отвечайте альтернативами. Я хочу знать: почему функция string.format() Python не позволяет string.format() нулями?

Тестовые случаи:

 >>> "{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) ).

One Solution collect form web for “Почему Python не может помещаться в string.format с "\ x00"?”

Поскольку метод string.format в Python2.7 является обратным портом из Python3 string.format . Python2.7 unicode – это строка Python 3, где строка Python2.7 представляет собой байты Python3. Строка – это неправильный тип для выражения двоичных данных в Python3. Вы должны использовать байты, которые не имеют метода форматирования. Так что действительно вы должны спросить, почему метод format в строке вообще в 2.7, когда он должен был быть действительно только для типа unicode, так как это то, что стало строкой в ​​Python3.

Который я предполагаю, что ответ заключается в том, что это слишком удобно, чтобы иметь его там.

Как связанный вопрос, почему еще нет format в байтах

  • Что такое Ruby-эквивалент «s =» приветствия Python,% s. Где% s?% («Джон», «Мэри»)
  • str.format () вызывает KeyError
  • Строковый формат: Начать научную нотацию с 0. для положительного числа, с -. для отрицательного числа
  • Форматирование условной строки Python
  • Как управлять заполнением строки Unicode, содержащей символы Восточной Азии
  • Формат строки с опциональным значением ключа ключа
  • Форматирование форматирования Python
  • IndexError: индекс tuple вне диапазона при аргументах метода анализа
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.