Динамически заменять переменные в списке

#python-3.x #list

#python-3.x #Список

Вопрос:

У меня есть список с некоторыми переменными, которые я хотел заменить:

 intros = [
"Hi, my name is {name} and I'm {age}",
"I'm {age} years old",
"My name is {name} and I live in {city}"
]
  

Я знаю, что в этом списке переменные name age и city существуют. Чего я не знаю, так это того, существуют ли все они в каждом элементе или некоторые из них могут отсутствовать. Я попытался создать общий способ сделать это, но он работает не так, как ожидалось.

 def build_intros(introductions, *args):
    formatted_intros = []

    for arg in args:
        for intro in intros:
            vars_to_replace = list(set(re.findall("{([^}] )}", intro)))
            for var_to_replace in vars_to_replace:
                intro = intro.replace("{"   var_to_replace   "}", arg)
                formatted_intros.append(intro)

name = "John"
age = "22"
city = "Texas"

build_intros(introductions, name, age, city)
  

Ответ №1:

Здесь у вас есть еще один пример

 intros = [
"Hi, my name is {name} and I'm {age}",
"I'm {age} years old",
"My name is {name} and I live in {city}"
]

for i in intros:
    print(i.format(name = "ads", age="49", city="New York"))
  

Ответ №2:

 name = "John"
age = "22"
city = "Texas"

intros = [
f"Hi, my name is {name} and I'm {age}",
f"I'm {age} years old",
f"My name is {name} and I live in {city}"
]

print(intros)
  

Это будет работать.

https://www.geeksforgeeks.org/formatted-string-literals-f-strings-python/

Эта ссылка объяснит, как мы используем f-строки

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

1. Спасибо @Divyessh за ответ. Как я мог бы сделать это в функции? Например, я бы передал конфигурацию функции, и она вернула бы форматированную конфигурацию?