将子字符串替换为元组列表的元素

时间:2014-10-11 03:34:32

标签: python replace tuples

我有一个字符串:

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)

2 个答案:

答案 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)