在python中查找和替换文本文件

时间:2019-03-08 17:20:03

标签: python replace find text-files

下面是代码,但是输出错误,在循环时仅输出第一个索引值。当我打印col,rac和mon的值时,它起作用。我还检查了i值,以确保它们以正确的方式递增。

TEXTFILE:

Fav Color   -- *color* 
Fav Car     -- *car*
Number      -- *Money*

代码:

with open('carstest.txt', 'r') as file :
    testdata = file.read()

colors = ["RED","GREEN","BLUE"]
car =['Ferrari', 'Mustang','Camero']
Money = ['one','two','three']
i =0
while i <len(colors):
    col = colors[i]
    rac = car[i]
    mon = Money[i]
    testdata = testdata.replace('*color*',  col)
    testdata = testdata.replace('*car*', rac)
    testdata = testdata.replace('*Money*', mon)
    print(testdata)
    i+=1

else:
    print ("DONE")

输出:

Fav Color   -- RED 
Fav Car     -- Ferrari
Number  -- one

Fav Color   -- RED 
Fav Car     -- Ferrari
Number  -- one

Fav Color   -- RED 
Fav Car     -- Ferrari
Number  -- one

DONE

所需产量:

Fav Color   -- RED 
Fav Car     -- Ferrari
Number  -- one

Fav Color   -- GREEN
Fav Car     -- Mustang
Number  -- two

Fav Color   -- BLUE
Fav Car     -- Camero
Number  -- three

DONE

2 个答案:

答案 0 :(得分:0)

完成第一轮替换后,不再需要替换占位符。如果您每次迭代都以testdata的原始值开始,那应该没问题。

答案 1 :(得分:0)

问题出在function renderHeadByUUID(Request $request){ if(isset($request->uuid)){ header("Content-type: image/png"); imagepng(MinecraftSkins::head($this->getImage($request->uuid))); } } 算法中。对于每个其他循环,您需要重新加载变量的原始内容(文件内容)。简单来说,您要查找字符串while,不幸的是,由于使用了*color*,该字符串不再存在。 str.replace()因此已更改,下一个循环重复不再适用。您必须解决该算法。例如,在testdata周期的开始,创建一个临时变量:

while