你可以使用str.replace() https://docs.python.org/2/library/string.html#string.replace:
string1 = "Today I went to the (market) to pick up some (fruit)."
string2 = "Today I went to (school) to learn (algebra) and science."
word_dict = {'market': 'library', 'fruit': 'books', 'school': 'class', 'algebra': 'calculus'}
for word, translation in word_dict.items(): # Use word_dict.iteritems() for Python 2
string1 = string1.replace('(' + word + ')', translation)
string2 = string2.replace('(' + word + ')', translation)
你也可以使用str.format() https://docs.python.org/2/library/string.html#string.Formatter.format如果你可以控制要使用的初始字符串{}
代替()
:
string1 = "Today I went to the {market} to pick up some {fruit}."
string2 = "Today I went to {school} to learn {algebra} and science."
word_dict = {'market': 'library', 'fruit': 'books', 'school': 'class', 'algebra': 'calculus'}
string1 = string1.format(**word_dict)
string2 = string2.format(**word_dict)
如果您无法控制初始输出,但想使用str.format()
无论如何,你可以替换任何出现的(
and )
with {
and }
:
string1 = string1.replace('(', '{').replace(')', '}').format(**word_dict)
string2 = string2.replace('(', '{').replace(')', '}').format(**word_dict)
或者以更简洁的方式执行相同操作,您可以使用str.translate() https://docs.python.org/2/library/string.html#string.translate随着str.maketrans() https://docs.python.org/2/library/string.html#string.maketrans:
trd = str.maketrans('()', '{}')
string1 = string1.translate(trd).format(**word_dict)
string2 = string2.translate(trd).format(**word_dict)
请记住,这将用大括号替换所有括号,即使它们没有包围您要替换的单词。您可以使用反向翻译剩余的大括号rev_trd = str.maketrans('{}', '()')
格式化字符串后;但通常在那时你最好只使用for
循环和str.replace()
如第一段代码所示。除非您可以将初始字符串更改为仅包含大括号,否则请使用它。