我有一个字符串:
string = """
foobar_tent\n
missyamica_ole
"""
这是我的元组列表:
t = [("foo","virtue"), ("ole, "allo")]
我试图用每个元组的第二个元素替换每个元组的第一个元素的每个实例。结果就是这样:
newstring = """
virtuebar_tent
missyamica_allo
""""
我试过这样做,但它并没有改变任何东西。
newstring = ""
for a,b in t:
newstring = string.replace(a,b)
答案 0 :(得分:1)
newstring
在循环中被替换后的原始字符串覆盖。
使用newstring.replace
代替string.replace
,以便不会覆盖替换后的字符串。
>>> string = """
... foobar_tent
... missyamica_ole
... """
>>> t = [("foo", "virtue"), ("ole", "allo")]
>>>
>>> newstring = string # <-----
>>> for a,b in t:
... newstring = newstring.replace(a,b) # <----
...
>>> newstring
'\nvirtuebar_tent\nmissyamica_allo\n'
>>> print(newstring)
virtuebar_tent
missyamica_allo
答案 1 :(得分:1)
你基本上是对的。主要问题是你每次都在做string.replace,所以只有列表中的最后一个替换才有效。
newstring = string
for a,b in t:
newstring = newstring.replace(a,b)