Мне нужно определить функцию, чтобы пройти через строку и заменить все поля замены, не зная, сколько их будет. Я знаю, что поля замены будут называться определенным образом. Например, если я знаю, что все поля будут называться '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.'
Я чувствую, что это должно быть простым, но мой разум не может пройти мимо кратных и неизвестного количества.
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)
Вы должны использовать метод 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")
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?'
str.format() Я тоже об этом подумал.
"{name}{name}".format(name="Mary") == "MaryMary"