Python-форматирование строк переменной длины

#python #string

#python #строка

Вопрос:

Я пытаюсь вставить динамические элементы в таблицу, но кажется, что встроенная функция заполнения не работает с переменными. Просто интересно, делаю ли я что-то неправильно или есть простые альтернативы заполнению по центру. Я знаю о ljust и rjust, но по какой-то причине нет m(iddle).

Простой пример:

 a=10
b='hi'
print(f'{b:^a}')
 

или

 a=10
b='hi'
print('{:^a}'.format(b))
 

производит

 Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'a' for object of type 'str'
 

Ввод 10 вместо a в инструкции print заставляет его работать по назначению, поэтому я предполагаю, что форматированная строка интерпретируется как строка. Является ли вспомогательная функция единственным выходом здесь?

Комментарии:

1. Каков желаемый результат?

Ответ №1:

 In [114]: print(f'{b:^{a}}')                                                                                                                                                                                                                                                 
    hi    

In [115]: print(f'"{b:^{a}}"')                                                                                                                                                                                                                                               
"    hi    "
 

Ответ №2:

Вероятно, нужно добавить еще один набор скобок

 a=10
b='hi'
print(f'{b:^{a}}')