用列表中的元素替换行

时间:2012-09-17 01:41:39

标签: python

我正在读取一个文件并在其中查找特定的字符串:

template = open('/temp/template.txt','r')
new_elements = ["movie1","movies2"]

for i in template.readlines():
    if "movie" in i:
        print "replace me"

这一切都很好,但我想用“new_elements”中的元素替换找到的行。我假设找到的字符串数量总是与“new_elements”列表中的元素数量相匹配。我只是不知道如何迭代new_elements同时寻找要替换的行。

干杯

2 个答案:

答案 0 :(得分:7)

一种方法是使new_elements成为迭代器:

template = open('/temp/template.txt','r')
new_elements = iter(["movie1","movies2"])

for i in template.readlines():
    if "movie" in i:
        print "replace line with", new_elements.next()

您还没有说过如何进行替换 - 例如,您是否要将其写入新文件 - 但这将适合您使用的任何代码。

答案 1 :(得分:3)

您正在寻找的内容非常简单:.pop()列表方法。这将获得列表中的下一个条目,并将其删除;您对该函数的下一次调用将返回下一个项目。根本不需要进行任何迭代。

如果没有参数,它将弹出最后一个元素。如果你想弹出第一个,你可以使用new_elements.pop(0),虽然这比从最后弹出更慢。