Передать значение в строку, импортированную из другого модуля, используя f-строку - PullRequest
0 голосов
/ 19 февраля 2020

Это будет проще объяснить на примере. Допустим, у меня есть файл settings.py, который выглядит следующим образом:

settings.py

a_string='This string should contain {value} <<< here.'

Затем я импортирую settings в мой файл .py где у меня есть функция mystring, которая выглядит примерно так (обратите внимание, что эта функция не работает так, как мне хотелось бы):

import settings

def mystring(value='100'):
    b_string=f'{settings.a_string}'
    return b_string

print(mystring())
# I would like this to return:
# "This string should contain 100 <<< here."

Я попытался поместить форматирование f-строки в настройки. py, например:

a_string="f'This string should contain {value} <<< here.'"

безрезультатно. Не повезло, если я поместил это в вызов функции или функции.

Мне кажется, что я упускаю что-то очевидное, но я просто не вижу этого, поэтому любые указатели будут высоко оценены.

1 Ответ

3 голосов
/ 19 февраля 2020

Метод 1: использовать str.format () :

b_string=settings.a_string.format(value=value)

Метод 2: использовать eval:

fstr = "the value is {value}"
def func(value=100):
    b_str = eval('f"' + fstr + '"')
    return b_str

ВНИМАНИЕ: Используйте этот метод, только если вы знаете, что содержит fstr. Если fstr является чем-то вроде "open('virus.txt', 'w').write('evil')", ваш код становится уязвимым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...