Python: замена неизвестного числа строковых переменных

1

Мне нужно определить функцию, чтобы пройти через строку и заменить все поля замены, не зная, сколько их будет. Я знаю, что поля замены будут называться определенным образом. Например, если я знаю, что все поля будут называться 'name' & 'position':

Test1 = "I think {name} should be our {position}. Only {name} is experienced. Who else could be a {position}?"
Test2 = "{name} is the only qualified person to be our {position}."

Мне нужна одна функция, которая обрабатывала бы оба из них одинаково, с выходом вроде:

>>Test1 = ModString(Test1)
>>Test2 = ModString(Test2)
>>Test1
>>'I think Mary should be our boss. Only Mary is experienced. Who else could be a boss?'
>>Test2
>>'Mary is the only qualified person to be our boss.'

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

  • 6
    Вы, вероятно, ищете форматирование строки: docs.python.org/3/library/stdtypes.html#str.format, например, "{name}{name}".format(name="Mary") == "MaryMary"
  • 1
    Вы также можете проверить регулярные выражения, если будете использовать другой формат: docs.python.org/3/library/re.html
Показать ещё 3 комментария
Теги:
string

4 ответа

0
Лучший ответ
def ModString(s, name_replacement, position_replacement):
    return s.replace("{name}",name_replacement).replace("{position}", position_replacement)

Затем:

Test1 = ModString(Test1, "Mary", "boss")
Test2 = ModString(Test2, "Mary", "boss")

или вы можете просто использовать .format(), который рекомендуется

def ModString(s, name_replacement, position_replacement):
    return s.format(name=name_replacement, position=position_replacement)
0

Вы должны использовать метод replace(), например, читайте здесь: https://www.tutorialspoint.com/python/string_replace.htm

Test1 = "I think {name} should be our {position}. Only {name} is experienced. Who else could be a {position}?"
Test2 = "{name} is the only qualified person to be our {position}."

def ModString(str, name, position):
    str = str.replace("{name}", name)
    str = str.replace("{position}", position)
    return str
Test1 = replaceWord(Test1, "Mary", "boss")
Test2 = replaceWord(Test2, "Mary", "boss")
0

bphi является правильным, используйте форматирование строк, например

test1 = "I think {name} should be our {position}. Only {name} is experienced. Who else could be a {position}?"
test1.format(name="Bob", position="top cat")
> 'I think Bob should be our top cat. Only Bob is experienced. Who else could be a top cat?'
0

str.format() Я тоже об этом подумал.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню