Предположим, у меня есть

x = 3 
s = "f'12{x}4'"

Как рассматривать s как f-строку для печати 1234, например, писать print(f'12{x}4') когда я печатаю s, он выводит его как: f'12{x}4'

0
Mohamed Hicham Gaballah 22 Сен 2021 в 16:39

7 ответов

Лучший ответ

Предполагая, что вы спрашиваете об этом, потому что вы не можете использовать фактические f-строки, но также не хотите передавать параметры явно с помощью format, возможно, потому что вы не знаете, какой параметр находится в not-really-an-f-string, а также при условии, что вы не хотите использовать eval, потому что, ну, eval.

Вы можете передать переменные из области видимости locals или globals в format:

>>> x = 3
>>> s = '12{x}4'
>>> s.format(**globals())
'1234'
>>> s.format(**locals())
'1234'

В зависимости от того, откуда поступает s (возможно, пользовательский ввод?), Это все же может быть немного рискованно, и может быть лучше определить dict "разрешенных" переменных и использовать его в format. Как и в случае с globals и locals, любые неиспользуемые переменные значения не имеют.

>>> vars = {"x": x, "y": y, "z": z}
>>> s.format(**vars)

Обратите внимание, что это не дает вам всех возможностей f-строк, которые также будут оценивать выражения. Например, вышеуказанное не будет работать для s = '12{x*x}4'.

0
tobias_k 22 Сен 2021 в 14:02

Удалите двойные кавычки, которые должны решить проблему, потому что f в строке f должен находиться за пределами строки actall.

0
user15446500 22 Сен 2021 в 13:41

Ты бы сделал это -

x = 3
s = f'12{x}4'
0
alonkh2 22 Сен 2021 в 13:41

Это тоже может сработать.

x = 3 
s = "12{}4"
print(s.format(x))
0
vnk 22 Сен 2021 в 13:41

Просто удалите лишние запятые

s = f'12{x}4'
0
Lakpa 22 Сен 2021 в 13:42

Вам не хватает двух концепций.

  1. Первый - это то, как вы сообщаете python, что ваша строка является f-строкой. Для этого нужно добавить символ «f» перед первой кавычкой:
f"this will be a f-string"
  1. Независимо от того, что у вас есть между {}, это будет ранее определенная переменная:
x = "something"
f"this will be {x}"
0
aleGpereira 22 Сен 2021 в 13:47
x = 3 
s = '12{}4'.format(x)

Или

x = 3 
print('12%s4' %x)
0
Hossein Forouzan 22 Сен 2021 в 14:52