Почему я не могу использовать пробелы вокруг выражения f-строки со спецификатором формата? - PullRequest
3 голосов
/ 04 ноября 2019

Когда я использую f-строки со спецификатором формата таким образом, как

>>> x = 1
>>> f'{ x:02 }'

Это дает мне ValueError: Unknown format code '\x20' for object of type 'int'. Чтобы это исправить, я должен удалить окружающие пробелы из выражения f-строки, например f'{x:02}'.

Почему это так?

1 Ответ

3 голосов
/ 04 ноября 2019

Учитывая выражение f-строки, такое как f'{ x:02 }', часть спецификатора формата выражения начинается и включает все символы после двоеточия (:). Это означает, что пробел справа от 02 является частью спецификатора формата. Несмотря на то, что говорит ошибка, как сказал Крис Рэндс , пробел является допустимым кодом формата. Причиной ошибки является то, что мы использовали неверный спецификатор формата для целого числа. Добавление пробела после 02 делает недействительным спецификатор.

Мы можем решить проблему с

>>> f'{ x:02}'

, которая успешно доставила мне 01. Однако я субъективно не рекомендую этот стиль для выражений f-строки, поскольку он выглядит несбалансированным, т. Е. Крайний левый пробел не имеет спаренного пространства на другом конце выражения. Вместо этого я бы не использовал окружающие пробелы (например, f'{x:02}').


Рекомендуемое чтение


РЕДАКТИРОВАТЬ: Я отредактировал этот ответ, чтобы дать правильное объяснение. В предыдущем редактировании я неправильно указал, что пробел не является допустимым кодом в формате. Спасибо, Крис, за исправление.

...